2013-07-24 118 views
15

我使用此代码播放视频文件使用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]; 

我想这不工作

//[self.videoPlayer release]; 

回答

50

AVPlayer没有一个名为stop方法。您可以pause或将rate设置为0.0。

+9

最差。框架。 EVER – Osa

13

您可以暂停并将AVPlayer对象值设置为零。

而在你的代码,你可以这样做:

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

如果你不想设置AV播放器到零,更好的方法可能是:

videoPlayer.replaceCurrentItemWithPlayerItem(nil) 
+2

此选项不是Swift兼容的。 –

+0

如果不这样做'replaceCurrentItem..',我发现networkActivityIndi​​cator永远不会消失,即使播放器已暂停并设置为零,应用程序也会使用大量电池电量。 – snakeoil

+0

@HolaSoyEduFelizNavidad,是的。你可以执行'.replaceCurrentItem(with:nil)' – gbhall

22

我平时seekToTime 0.0,然后暂停。它与我完全合作。 :)

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