2016-06-30 23 views
1

Mein Code:

playerController = [[AVPlayerViewController alloc]init]; 


    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(playerItemDidReachEnd:) 
               name:AVPlayerItemDidPlayToEndTimeNotification 
               object:[playerController.player currentItem]]; 

    playerController.player = [AVPlayer playerWithURL:videoURL]; 

    playerController.view.frame = self.view.frame; 

    [playerController.player seekToTime:kCMTimeZero]; 

    playerController.player.actionAtItemEnd = AVPlayerActionAtItemEndPause; 

    [playerController.player play]; 

    [self presentViewController:playerController animated:YES completion:nil]; 

Hier beende ich das Video in bestimmten Zeitpunkt.Wie kann AVPlayer in einer bestimmten Zeit gestoppt werden?

+0

Was möchten Sie tun? Video zum Beispiel bei 3min34sec stoppen? – AnthoPak

+0

ja anthonin ..... – ragu

+0

Wird diese bestimmte Zeit immer gleich sein? – AnthoPak

Antwort

3

Was Sie tun müssen, ist:

Erstellen Sie die folgende Eigenschaft in .h-Datei:

@property (strong) id playerObserver; 

diesen Code hinzufügen in .m-Datei:

AVPlayer *player = [AVPlayer playerWithURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]]; 

[player play]; 

self.playerObserver = [player addBoundaryTimeObserverForTimes:@[[NSValue valueWithCMTime:CMTimeMake(1, 1000)]] queue:NULL usingBlock:^{ 
    NSLog(@"Video started playing"); 

    [player performSelector:@selector(pause) withObject:nil afterDelay:3.0]; //will pause player after 3.0 seconds 
    [player removeTimeObserver:self.playerObserver]; 
}]; 

Dieser Code wird verfolgen wenn das Video abgespielt wird. Dann, nach der gewünschten Zeit (hier 3 Sekunden), wird der Player angehalten. Zumindest entfernen wir den Beobachter auf dem Player.

Hoffe, das hilft!

+0

Ich habe den Code vor dem Posten versucht, ** es funktioniert **. Vielleicht ist Ihre Implementierung ganz anders. Für deine zweite Ausgabe denke ich, dass dein erster Fix dafür verantwortlich ist, denn "Pause" konnte keine Spielschleife machen. – AnthoPak

+0

Sie haben gesagt, dass Sie 'playerController.player.currentItem.forwardPlaybackEndTime = CMTimeMake (timeDuration, 1);' hinzufügen, und ich denke, es ist diese Zeile, die den Fehler verursacht. – AnthoPak

+0

danke. Habe aufgezählt! – Jerome

0

SWFIT 3 Version kommen von @ Anthonin C Antwort.

player = AVPlayer(url: tmpURL) 
player?.perform(#selector(player?.pause), with: nil, afterDelay: 3)