2012-07-23 18 views
7

Używam odtwarzacza AV do odtwarzania filmów w mojej aplikacji. Używam seekToTime: toleranceBefore: toleranceAfter:Suwak AVPlayer szukający wstecz Problem

do poszukiwania poprzez wideo za pomocą suwaka, więc problem jest wtedy, gdy przesuń w kierunku do przodu, wideo stara doskonale (wygląda jak film porusza się szybciej) ale w przesuwanie do tyłu wideo wygląda szarpane podczas przesuwania do tyłu (w zasadzie nie tak gładka jak przesuwając florward pokazuje). Czy ktoś wie, co to jest problem, czy robię coś złego.

Proszę o pomoc.

+0

Czy możesz przerwać, zanim zaczniesz szukać? Nie jestem w 100% pewny, ponieważ tego nie wypróbowałem. – av501

Odpowiedz

0

Myślę, że to dlatego, że bufor jest pusty, gdy strumień jest odtwarzany wstecz. Wykonaj KVO na wartość bufferIsEmpty.Może to być spowodowane tym, że w aplikacji może być używana dużo pamięci pod względem innych zasobów. Najlepszy sposób testowania to jest stworzenie innego projektu i wypróbowanie tego samego. Tylko spróbuj użyć AVPlayerQueue zamiast AVPlayer i zobacz rezultat.

3

Miałem ten sam problem na iPhonie. Oto lista kontrolna:

  1. Upewnij providesPreciseDurationAndTiming wraca TAK
  2. Upewnij canPlayReverse brzmi TAK (Niektóre kodeki nie obsługują chyba.)
  3. Nie używaj najwyższej jakości.

AVCaptureSession domyślnie przechwytuje wysokiej jakości. Musisz ustawić niższą jakość, jeśli chcesz uzyskać jedwabiście płynne cofanie, nawet na iPhonie 5. Odwracanie wymaga więcej obliczeń, ponieważ większość kodeków jest zoptymalizowanych do dekompresji w kierunku do przodu.

Aby obejść ten problem, jeśli wymagane jest przechwytywanie wysokiej jakości, można przechwycić do formatu wysokiej rozdzielczości, wyeksportować do formatu niskiej rozdzielczości i użyć go do edycji, a następnie użyć czasów w celu przycięcia oryginalnego obrazu o wysokiej rozdzielczości . Rozważam robienie tego we własnej aplikacji.