2016-02-26 68 views
0

我试图通过使用数据URI(data:video/mp4; base64,AAAAHGZ0eXBtcDQyAAAAAG1wNDJpc29 ......)来播放视频。这里是我的代码至今:iOS从数据URI播放视频

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方面做什么。

回答

0

此代码播放来自URL的电影...假设这是您的问题?

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 
+0

感谢您的回答。但是,我想知道是否可以使用数据URI(基本上是base64编码的字符串)播放视频,而不是将文件写入磁盘。 – jfizz

+0

我相信这段代码正在流式传输文件,它并不是先下载它。 – user3069232

+0

这听起来像它可能是一个解决方案。你介意链接到适当的文件,它详细介绍了流媒体吗? – jfizz