33

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];
iTag
  • 413
  • 1
  • 4
  • 10

5 Answers5

70

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

Samet DEDE
  • 1,621
  • 19
  • 28
34

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

[self.videoPlayer seekToTime:CMTimeMake(0, 1)];
[self.videoPlayer pause];
Huynh Inc
  • 2,010
  • 1
  • 25
  • 42
27

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

videoPlayer.replaceCurrentItemWithPlayerItem(nil)
Mustafa
  • 5,307
  • 1
  • 20
  • 19
23

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;
Ashish Kakkad
  • 23,586
  • 12
  • 103
  • 136
I_User
  • 325
  • 3
  • 18
13

We have swift protocol extensions - rejoice.

extension AVPlayer {
   func stop(){
    self.seek(to: CMTime.zero)
    self.pause()
   }
}
johndpope
  • 5,035
  • 2
  • 41
  • 43