2013-07-24 39 views
15

Tôi đang sử dụng mã này để chơi các tập tin video sử dụng avplayer làm thế nào để ngăn chặn nóCách dừng video trong 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]; 

Tôi cố gắng này nó không hoạt động

//[self.videoPlayer release]; 

Trả lời

50

AVPlayer không có một phương thức có tên stop. Bạn có thể pause hoặc đặt rate thành 0.0.

+9

WORST. KHUNG. EVER – Osa

13

Bạn có thể tạm dừng và đặt giá trị đối tượng AVPlayer thành không.

Và trong mã của bạn, bạn có thể sử dụng này:

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

Nếu bạn không muốn cài đặt các cầu thủ av để nil, một cách tiếp cận tốt hơn có thể là:

videoPlayer.replaceCurrentItemWithPlayerItem(nil) 
+2

Tùy chọn này không tương thích với Swift. –

+0

Nếu không làm điều này 'replaceCurrentItem..' Tôi thấy rằng networkActivityIndicator không bao giờ biến mất và ứng dụng sử dụng rất nhiều năng lượng pin, ngay cả khi trình phát đã bị tạm dừng và được đặt thành 0. – snakeoil

+0

@HolaSoyEduFelizNavidad, đúng vậy. Bạn có thể làm '.replaceCurrentItem (với: nil)' – gbhall

22

Tôi thường seekToTime 0.0, sau đó tạm dừng. Nó hoạt động hoàn hảo với tôi. :)

[self.videoPlayer seekToTime:CMTimeMake(0, 1)]; 
[self.videoPlayer pause]; 
Các vấn đề liên quan