2016-02-26 63 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