używam AVPlayera w aplikacji Cocoa, a zaimplementowałem polecenie, które przeskakuje na koniec wideo.Szukając dokładnie, w przeciwieństwie do dwóch sekund krótkich, w AVPlayer
Problem polega na tym, że AVPlayer nie szuka miejsca, do którego je wysłałem.
Na przykład jeden z filmów, które mam, ma 4 minuty i 14 sekund. Kiedy próbuję do końca, AVPlayer dąży do 4 minut i 12 sekund - dwie sekundy krótkie. Jeśli następnie uderzę, odtwarzacz zagra na dwie sekundy, , a następnie osiągnie koniec.
Moja pierwsza próba była to:
[self.player seekToTime:self.player.currentItem.duration];
mam włączone go do tego:
[self.player seekToTime:self.player.currentItem.duration
toleranceBefore:kCMTimePositiveInfinity
toleranceAfter:kCMTimeZero];
Ani jeden działa lepiej niż inne.
Próbowałem również staram się uzyskać kCMTimePositiveInfinity
. Po prostu wtedy mnie zignorował.
Wygląda na to, że odtwarzacz nie wczytał jeszcze tej części wideo. Mogę nawet dążyć do niezupełnie końca, przejść do prawdziwego celu, a następnie spróbować ponownie dotrzeć do końca, a on wróci do niezupełnie końca.
Niedobór nie zawsze wynosi dwie sekundy. W niektórych moich filmach działa mniej więcej dokładnie poprawnie, skacząc bardzo blisko prawdziwego końca, jeśli nie do końca. Co najmniej jeden, trwa krótko trzy sekundy. Długość nie wydaje się być czynnikiem; wszystkie z nich są mniej więcej tej samej długości, z wyjątkiem jednej, która trwa ponad godzinę i ma krótki okres dwóch sekund.
Dlaczego więc odtwarzacz AVPlayer skacze aż o trzy sekundy krótszy od miejsca, w którym mu kazałem i jak mogę go przekonać, aby przeskoczył do momentu, w którym prosiłem?
Ustawienie kCMTimePositiveInfinity pomogło mi również uniknąć tego małego ruchu wstecz suwaka podczas wyszukiwania. –
Po prostu niesamowite! –