MPMoviePlayerController shows only black screen - Swift

I have a View inside the ViewController that I want to add a motion controller to it. But for now, I get only a black screen. I run this on a simulator and use the apple dev thread I tested in Safari and it works.

The video viewer is added to the controller via IBOutlet. I am using Xcode 6 beta 7.

This is all inside the UIViewController.

320x320 Video Image Ad (Global):

@IBOutlet var videoView: UIView! 

MPMoviePlayerController declaration (global):

  var videoPlayer : MPMoviePlayerController = MPMoviePlayerController() 

Adding a video field for viewing:

  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:

Storyboard

Simulator:

enter image description here

Update:

I also tried to do this. Super simple. And I still get the same result. The frame size is set 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() 
+5
source share
2 answers

I ended up working with MPMoviePlayerController and decided 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() 
+4
source

Instead of using MPMoviePlayerController this works fine for me:

 // 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") } } 
+1
source

Source: https://habr.com/ru/post/1202277/


All Articles