I have a View inside a ViewController that I want to add a move player controller to it. But so far I'm only getting a black screen. I'm running this on the simulator, and using the apple dev stream which I tested in Safari and it works.
The videoView is added to the controller through an IBOutlet. I'm using Xcode 6 beta 7.
This is all inside a UIViewController.
Declaration of videoView 320x320 (global):
@IBOutlet var videoView: UIView!
Declaration of MPMoviePlayerController (global):
var videoPlayer : MPMoviePlayerController = MPMoviePlayerController()
Adding videoPlayer to View:
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:
Simulator:
Update:
I've also tried doing this. Super simple. And I'm still getting the same result. The frame size is set that way so that I can see that the player has actually been added.
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()
I ended up ditching MPMoviePlayerController and opted to use AVFoundation instead.
Working example:
Global declarations:
var player : AVPlayer? = nil
var playerLayer : AVPlayerLayer? = nil
var asset : AVAsset? = nil
var playerItem: AVPlayerItem? = nil
inside 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()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With