2014-09-10 94 views
5

我在ViewController中有一個View,我想添加一個移動播放器控制器。但到目前爲止,我只能看到黑屏。 我在模擬器上運行它,並使用我在Safari中測試的蘋果開發流,它工作。MPMoviePlayerController只顯示黑屏 - Swift

videoView通過IBOutlet添加到控制器。我正在使用Xcode 6 beta 7.

這是所有在UIViewController中。 videoView 320×320(全球)的

聲明:

@IBOutlet var videoView: UIView! 

的MPMoviePlayerController(全球)聲明:

var videoPlayer : MPMoviePlayerController = MPMoviePlayerController() 

添加錄像機來查看:

  videoURLWithPath = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" 
      let videoURL = NSURL(fileURLWithPath: videoURLWithPath) 
      videoPlayer.movieSourceType = MPMovieSourceType.Streaming; 
      videoPlayer.contentURL = videoURL 
      videoPlayer.view.frame = videoView.bounds 

      videoView.addSubview(videoPlayer.view) 
      videoPlayer.controlStyle = MPMovieControlStyle.Embedded 

      videoPlayer.prepareToPlay() 
      videoPlayer.play() 

故事板:

Storyboard

模擬器:

enter image description here

更新:

我也試着這樣做。超級簡單。而且我仍然得到相同的結果。幀大小是這樣設置的,以便我可以看到玩家實際上已被添加。

  let streamURL = NSURL(string: "http://www.thumbafon.com/code_examples/video/segment_example/prog_index.m3u8") 
      var streamPlayer = MPMoviePlayerController(contentURL: streamURL) 
      streamPlayer.view.frame = CGRect(x: 10, y: 10, width: 200, height: 200) 
      streamPlayer.controlStyle = MPMovieControlStyle.Embedded 
      videoView.addSubview(streamPlayer.view) 
      streamPlayer.play() 
+0

我們會需要比這更多的信息,即你​​如何聲明和初始化你的播放器,你的播放器視圖和開發流的實現等等。更多的代碼將會有所幫助。 – Unheilig 2014-09-10 20:46:41

+0

@Unheilig宣言和init添加。玩家視圖只是一個添加到故事板的320x320視圖,添加了聲明。開發流源自蘋果,這是一個基本的HLS流。 – bzmw 2014-09-10 20:52:00

回答

4

我最終放棄了MPMoviePlayerController並選擇使用AVFoundation來代替。

工作例如:

全局聲明:

var player : AVPlayer? = nil 
var playerLayer : AVPlayerLayer? = nil 
var asset : AVAsset? = nil 
var playerItem: AVPlayerItem? = nil 

裏面viewDidLoad中:

  let videoURLWithPath = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8" 
      let videoURL = NSURL(string: videoURLWithPath) 

      asset = AVAsset.assetWithURL(videoURL) as? AVAsset 
      playerItem = AVPlayerItem(asset: asset) 

      player = AVPlayer(playerItem: self.playerItem) 

      playerLayer = AVPlayerLayer(player: self.player) 
      playerLayer!.frame = videoView.frame 
      videoView.layer.addSublayer(self.playerLayer) 

      player!.play() 
+0

我可以將此添加到任何視圖和視頻在我的網址將播放?我如何將它設置爲背景?謝謝 – kareem 2015-04-09 05:10:09

+0

@BZMWillemsen我得到'使用未解析的標識符videoView,你在哪裏聲明它?我已經嘗試了很多東西,我還不得不拆開3個變量 – Gerwin 2016-02-03 14:06:10

+0

@Gerwin將您自己的videoView(UIView)分別添加到控制器中。 UIView將會覆蓋你的播放器。 – Batu 2016-03-06 20:17:50

1

而不是使用MPMoviePlayerController,這完美的作品對我來說:

// import MediaPlayer 

var moviePlayer : MPMoviePlayerViewController? 

@IBAction func playVideo() { 

    let path = NSBundle.mainBundle().pathForResource("ra3", ofType:"mp4") 
    let url = NSURL.fileURLWithPath(path!) 

    let videoURL = url 
    moviePlayer = MPMoviePlayerViewController(contentURL: videoURL) 

    if let player = moviePlayer { 
     player.view.frame = self.view.bounds 
     self.presentViewController(moviePlayer!, animated: true, completion: nil) 
    } 
    else { 
     NSLog("no player") 
    } 
}