How to stop a video in AVPlayer?

42,085

Solution 1

AVPlayer does not have a method named stop. You can pause or set rate to 0.0.

Solution 2

I usually seekToTime 0.0, then pause. It work perfectly with me. :)

[self.videoPlayer seekToTime:CMTimeMake(0, 1)];
[self.videoPlayer pause];

Solution 3

If you dont want to set the av player to nil, a better approach might be :

videoPlayer.replaceCurrentItemWithPlayerItem(nil)

Solution 4

You can pause and set AVPlayer object value to nil .

And in your code you can use this :

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

Solution 5

We have swift protocol extensions - rejoice.

extension AVPlayer {
   func stop(){
    self.seek(to: CMTime.zero)
    self.pause()
   }
}
Share:
42,085
iTag
Author by

iTag

Updated on January 10, 2020

Comments

  • iTag
    iTag over 4 years

    I am using this code to play video file using avplayer how do I stop it

     [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];
    

    I tried this it doesn't work

        //[self.videoPlayer release];