2012-07-23 6 views
7

Ich verwende AVplayer, um Videos in meiner App abzuspielen. Ich bin mit seekToTime: toleranceBefore: toleranceAfter:AVPlayer Slider sucht rückwärts Ausgabe

zu suchen, durch das Video einen Schieber mit so das Problem ist, wenn Sie in Vorwärtsrichtung schieben, Video perfekt sucht (sieht aus wie Video schneller bewegt) aber in rückwärts gleiten video sieht ruckartig beim Zurückschieben (im Grunde nicht so glatt wie gleiten florward zeigt). Weiß jemand, was das Problem ist oder mache ich etwas falsch?

Bitte Hilfe.

+0

Können Sie anhalten, bevor Sie suchen? Ich bin mir da nicht 100% sicher, da ich es nicht ausprobiert habe. – av501

Antwort

0

Ich denke es ist, weil der Puffer leer wird, wenn Sie rückwärts streamen.Bitte machen Sie eine KVO auf den BufferIsEmpty Wert. Es kann sein, weil in Ihrer Anwendung viel Speicher in Bezug auf andere Ressourcen verwendet wird. Die beste Möglichkeit zu testen Dies ist, um ein anderes Projekt zu erstellen und das gleiche zu versuchen. Versuchen Sie einfach AVPlayerQueue anstelle von AVPlayer zu verwenden und sehen Sie sich das Ergebnis an.

3

Ich hatte das gleiche Problem auf dem iPhone. Hier ist die Checkliste:

  1. Stellen Sie sicher, providesPreciseDurationAndTiming kehrt JA
  2. Stellen Sie sicher, canPlayReverse JA (Einige Codecs nicht es unterstützen, denke ich.)
  3. Sie nicht die höchste Qualität verwenden.

AVCaptureSession ist standardmäßig auf qualitativ hochwertige Erfassung eingestellt. Sie müssen eine niedrigere Qualitätseinstellung verwenden, wenn Sie ein seidenweiches Rückwärtsfahren wünschen, selbst auf iPhone 5. Das Rückwärtsgehen erfordert mehr Rechenleistung, da die meisten Codecs für die Dekomprimierung in Vorwärtsrichtung optimiert sind.

Wenn Sie eine qualitativ hochwertige Aufnahme benötigen, können Sie in einem hochauflösenden Format aufnehmen, in ein Format mit niedriger Auflösung exportieren und diese zum Bearbeiten verwenden. Verwenden Sie dann die Zeiten zum Beschneiden des ursprünglichen hochauflösenden Bilds . Ich überlege, dies in meiner eigenen App zu tun.