2012-05-16 15 views
5

Użyłem seekToTime w mojej aplikacji i działa poprawnie. Ale chcę mieć więcej informacji na ten temat. Co oznacza, że ​​jeśli mam plik wideo z transmisją strumieniową trwający 1 minutę, chcę odtworzyć go od 15 do 45 sekundy (pierwsze 15 sekund i ostatnie 15 sekund nie będą odtwarzane).AVPlayer seektoTime iPhone

Jak mogę to zrobić?

Wiem, że za pomocą funkcji seekToTime mogę odtworzyć film z 15-ej sekundy, ale jak zatrzymać go na 45. sekundę i również zostać zauważonym metodą, którą wideo odtwarzało przez określony czas?

CMTime timer = CMTimeMake(15, 1); 
[player seekToTime:timer]; 

Powyższy kod przenosi mnie do 15. sekundy pliku strumieniowego, ale jak zatrzymać go na 45. sekundę i otrzymać powiadomienie?

Szukałem dużo, ale nie mogłem uzyskać żadnych informacji.

Dzięki

EDIT:

Jak @codeghost zasugerował, wystarczy użyć forwardPlaybackEndTime.

można po prostu użyć:

yourAVPlayerItem.forwardPlaybackEndTime = CMTimeMake(10, 1); 

Oto 10 to czas aż do AVPlayerItem zagra.

+0

działa funkcja forwardPlaybackEndTime dla Ciebie? – onmyway133

+0

Tak, zadziałało, musiałem zaimplementować trochę logiki i zaczęło działać zgodnie z moim wymaganiem –

+0

możesz rzucić okiem na moje pytanie http://stackoverflow.com/questions/25717819/forwardplaybackendtime-does-notwork? Odtwarzacz wciąż gra do końca – onmyway133

Odpowiedz

7

Ustaw właściwość forwardPlaybackEndTime na swoim AVPlayerItem.

+0

dzięki codeghost, Jak mogę go używać w moim kodzie, czy masz jakiś link odnośnikowy na przykład/tutorial związany z tym forwardPlaybackEndTime –

+2

Sprawdź GUID systemu odtwarzania w Xcode, ale wszystko, co powinieneś można to ustawić, np "playerItem.forwardPlaybackEndTime = CMTimeMake (45, 1);". Stwórz AVQueuePlayer z AVPlayerItem i graj tak jak dziś. – codeghost

+0

Dzięki bro :) zapisałeś mój dzień –

0

ja nie wiem, czy coś jest wbudowany do tego w AVPlayer, ale to, co chciałbym zrobić, to zbudować funkcję i wywołać ją:

[self performSelector:@selector(stopPlaying) withObject:nil afterDelay:45]; 


-(void)stopPlaying{ 
    [player pause]; 
} 

to przestanie grać po 45 sekundach i oczywiście można umieścić 45 dowolną liczbę sekund, które chcesz.

+0

Masz rację, to jest inny sposób, aby zatrzymać gracza, ale jak zaproponował forwardeghost do forwardPlaybackEndTime, szukam tego, jak używać go w kodzie, ale do tej pory nie ma żadnego fragmentu kodu lub przykładu. Dokumentacja Apple jest słaba w związku z AVFoundation. To zbyt trudne do zrozumienia –

0

Do tego celu można użyć [AVPlayer addPeriodicTimeObserverForInterval:queue:usingBlock:].

Okresowo pobieraj AVPlayer.currentTime i dzwoń do pauzy lub zatrzymaj się dokładnie o tej godzinie.

Powiązane problemy