2015-03-31 132 views
0

我有一个视频,我试图播放使用MPMoviePlayerController,它加载正常,但5秒后切出。我发现了这篇文章,但它并不适用于swift。MPMoviePlayerController停止播放5秒后 - Swift

MPMoviePlayerController stops playing the video after 5s

这里是我的代码。

import MediaPlayer 




class ViewController: UIViewController { 


override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 



    var moviePlayer: MPMoviePlayerController? 



let url = NSURL(string: "http://path/to/video.m3u8") 

    moviePlayer = MPMoviePlayerController(contentURL: url) 

    if let player = moviePlayer { 

     player.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height) 
     player.view.sizeToFit() 
     player.scalingMode = MPMovieScalingMode.None 


     player.movieSourceType = MPMovieSourceType.Streaming 
     //player.repeatMode = MPMovieRepeatMode.One 


     player.play() 

     self.view.addSubview(player.view) 

     NSNotificationCenter.defaultCenter().addObserver(
      self, 
      selector: "metadataUpdated", 
      name: MPMoviePlayerTimedMetadataUpdatedNotification, 
      object: nil) 

    } 

} 
+0

是您的视频来直播或点播?如果不是,则使用MPMovieSourceType.File代替MPMovieSourceType.Streaming。 – deepax11 2015-06-16 12:49:22

回答

2

您的moviePlayer是否会超出范围?你有没有试过把它变成一个成员变量?

moviePlayer是一个局部变量viewDidLoad,所以一旦该函数完成,我看不到任何原因,您的球员不会被释放。

如果您将其作为课程的一个变量,则其生命周期将延长以符合课程的使用期限。

class ViewController: UIViewController { 

var player: MPMoviePlayerController? 

    override func viewDidLoad() { 
     // ... 
     self.player = MPMoviePlayerController(contentURL: url) // won't go out of scope at end of viewDidLoad() 
     // ... 
    } 
+0

有节奏的弗里斯曼非常感谢你的回复。我自学成才,仍在学习。我不确定你是什么意思。你能否提供更多的上下文?我非常感谢你能提供的任何智慧。 – 2015-03-31 03:12:14

+0

没问题,更新了答案。 – 2015-03-31 03:21:46

+0

你是男人!这完全奏效。我更接近实现我在m3u8视频中使用定时元数据的目标。如果你有一个时刻,请停止我的[其他线程](http://stackoverflow.com/questions/29310256/getting-timed-metadata-in-swift-ios-8-from-m3u8-streaming-video)。我真的很感谢你的时间。 – 2015-03-31 23:49:32