簡體   English   中英

MPMoviePlayerController僅顯示黑屏-Swift

[英]MPMoviePlayerController shows only black screen - Swift

我在ViewController中有一個View,我想向其中添加一個移動播放器控制器。 但是到目前為止,我只得到了黑屏。 我正在模擬器上運行此程序,並使用了我在Safari中測試的apple dev流,並且該流有效。

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

全部都在UIViewController中。

videoView 320x320的聲明(全局):

    @IBOutlet var videoView: UIView!

MPMoviePlayerController的聲明(全局):

    var videoPlayer : MPMoviePlayerController = MPMoviePlayerController()

向視圖添加videoPlayer:

            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")
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM