iOS从数据URI播放视频

时间:2016-02-26 19:02:16

标签: ios swift video mpmovieplayercontroller

我正在尝试使用数据URI播放视频(数据:video / mp4; base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29 ......)。这是我到目前为止的代码:

func videoDataWasLoaded(data: NSData) {
    let moviePlayer = MPMoviePlayerController()
    let base64 = data.base64EncodedStringWithOptions(NSDataBase64EncodingOptions(rawValue: 0))
    let dataUri = NSURL(string: "data:video/mp4;base64,\(base64)")
    moviePlayer.contentURL = dataUri
    moviePlayer.play()
}

我已确认通过将数据(NSData)写入tmp文件然后将其用于contentURL来播放视频。但是,写入磁盘的速度很慢,我认为数据URI方法会更快,特别是因为我的电影文件很小(每个大约5秒)。

更新:这个问题并不关心用于播放视频的方法(AVPlayer,MPMoviePlayerController)。相反,它关注从数据URI播放视频的可能性。 Here is a link描述了我想要用HTML5做的事情。

1 个答案:

答案 0 :(得分:0)

此代码从网址播放电影......假设这是您的问题?

let videoURL = self.currentSlide.aURL
self.playerItem = AVPlayerItem(URL: videoURL)
self.player = AVPlayer(playerItem: self.playerItem)
self.playerLayer = AVPlayerLayer(player: self.player)
self.streamPlayer =  AVPlayerViewController()
self.streamPlayer.player = self.player
self.streamPlayer.view.frame = CGRect(x: 128, y: 222, width: 512, height: 256)
self.presentViewController(self.streamPlayer, animated: true) {
        self.streamPlayer.player!.play()
}

但抱歉,那就是播放一个网址;你想要一个URI。我虽然你错误地输入了你的问题,我的错误。我这次查找了URI:|

答案肯定在于将视频源转换为可播放的流,就像在M3u8中一样。这是一篇关于这个主题的优秀文章。

http://stackoverflow.com/questions/6592485/http-live-streaming