如何在AVPlayer中停止视频?

iTa*_*Tag 21 objective-c avfoundation avplayer

我正在使用此代码使用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];
Run Code Online (Sandbox Code Playgroud)

我试过这个不起作用

    //[self.videoPlayer release];
Run Code Online (Sandbox Code Playgroud)

Sam*_*EDE 57

AVPlayer没有名为的方法stop.您可以pause或设置rate为0.0.

  • 最差.框架.EVER (36认同)

Huy*_*Inc 29

我通常搜索到时间0.0,然后暂停.它与我完美配合.:)

[self.videoPlayer seekToTime:CMTimeMake(0, 1)];
[self.videoPlayer pause];
Run Code Online (Sandbox Code Playgroud)


I_U*_*ser 20

您可以暂停并将AVPlayer对象值设置为nil.

在您的代码中,您可以使用:

[self.videoPlayer pause];
[self.avPlayerLayer removeFromSuperlayer];
self.videoPlayer = nil;
Run Code Online (Sandbox Code Playgroud)


Mus*_*afa 18

如果您不想将av播放器设置为nil,则更好的方法可能是:

videoPlayer.replaceCurrentItemWithPlayerItem(nil)
Run Code Online (Sandbox Code Playgroud)

  • 此选项与Swift不兼容. (3认同)
  • @HolaSoyEduFelizNavidad,是的。你可以做`.replaceCurrentItem(with: nil)` (2认同)

joh*_*ope 7

我们有 swift 协议扩展 - 欢欣鼓舞。

extension AVPlayer {
   func stop(){
    self.seek(to: CMTime.zero)
    self.pause()
   }
}
Run Code Online (Sandbox Code Playgroud)