MPMoviePlayerController只显示黑屏 - Swift
问题描述:
我在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()
故事板:
模拟器:
更新:
我也试着这样做。超级简单。而且我仍然得到相同的结果。帧大小是这样设置的,以便我可以看到玩家实际上已被添加。
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()
答
我最终放弃了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()
答
而不是使用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")
}
}
我们会需要比这更多的信息,即你如何声明和初始化你的播放器,你的播放器视图和开发流的实现等等。更多的代码将会有所帮助。 – Unheilig 2014-09-10 20:46:41
@Unheilig宣言和init添加。玩家视图只是一个添加到故事板的320x320视图,添加了声明。开发流源自苹果,这是一个基本的HLS流。 – bzmw 2014-09-10 20:52:00