2013-07-24 27 views
15

Używam tego kodu do odtwarzania plików wideo za pomocą avplayer jak mogę przestać goJak zatrzymać wideo w AVPlayer?

[videoView setHidden:NO]; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *path2 = [documentsDirectory stringByAppendingPathComponent:saveFileName]; 
    NSURL *url1 = [[NSURL alloc] initFileURLWithPath: path2]; 
    videoPlayer = [AVPlayer playerWithURL:url1] ; 
    self.avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:videoPlayer]; 

    //[self willAnimateRotationToInterfaceOrientation]; 
    avPlayerLayer.frame = videoView.bounds; 
    [self.videoView.layer addSublayer: avPlayerLayer]; 

    [self.videoPlayer play]; 

Próbowałem to nie działa

//[self.videoPlayer release]; 

Odpowiedz

50

AVPlayer nie posiada metodę o nazwie stop. Możesz pause lub ustawić rate na 0.0.

+9

WORST. STRUKTURA. EVER – Osa

13

Możesz zatrzymać i ustawić wartość obiektu AVPlayer na zero.

I w kodzie można użyć to:

[self.videoPlayer pause]; 
[self.avPlayerLayer removeFromSuperlayer]; 
self.videoPlayer = nil; 
13

Jeśli nie chcesz, aby ustawić odtwarzacz AV do zera, lepszym rozwiązaniem może być:

videoPlayer.replaceCurrentItemWithPlayerItem(nil) 
+2

Ta opcja nie jest kompatybilna z Swift. –

+0

Bez tego 'replaceCurrentItem..' stwierdzam, że networkActivityIndicator nigdy nie zniknie i aplikacja zużywa dużo energii baterii, nawet gdy odtwarzacz został wstrzymany i ustawiony na zero. – snakeoil

+0

@HolaSoyEduFelizNavidad, tak jest. Możesz zrobić '.replaceCurrentItem (with: nil)' – gbhall

22

zwykle seekToTime 0,0, następnie przerwać. Działa idealnie ze mną. :)

[self.videoPlayer seekToTime:CMTimeMake(0, 1)]; 
[self.videoPlayer pause]; 
Powiązane problemy