2015-03-31 125 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

相關問題