2011-01-10 26 views
4

相當棘手的一個這個...如何播放從套接字手動加載的iOS視頻?

我想在iOS上通過網絡流式傳輸視頻(H264)。但是,我通過一個打開的套接字將視頻數據放入緩衝區(使用CocoaAsyncSocket),因此我沒有可用於創建AVAsset或MPMoviePlayer的視頻的URL。視頻是直播視頻流,所以如果有什麼不同,數據將會持續到來(即沒有設置持續時間)。我不得不這樣做,因爲服務器是RTSP服務器。我已經編寫了自己的RTSP客戶端來發送命令和接收響應,現在我正在嘗試對通過連接傳輸的視頻數據做一些有用的工作。

關於如何播放此視頻的任何想法?我現在能想到的唯一的事情是以某種方式保存到一個文件中並加載它(但我不明白這會如何工作,因爲我將不斷加載新數據),或者以某種方式手動執行某些操作像ffmpeg。不,不幸的是,我不能讓服務器做HTTP Live Streaming。

任何幫助將不勝感激!

+0

因此,我目前想知道是否可以實現自己的NSURLProtocol,它提供從RTSP服務器緩衝的視頻數據。那麼我可以創建一個具有該類型URL的AVAsset? – 2011-01-11 10:14:11

+0

另外,也許你可以通過創建本地.M3U8並在本地文件系統上分割流來僞造HTTP實時流。雖然聽起來有點駭人聽聞,但它可能工作... – 2011-01-11 20:54:06

回答

0

我還沒有深入挖掘AVFoundation,但你可以通過創建一個AVAssetAVAssetWriter來實現它。您提供AVAssetWriterAVAssetWriterInput的實例,該實例需要CMSampleBuffer數據並將其打包爲AVAssetWriter

基於docsAVAssetWriterInput,它旨在從「實時來源」獲取數據。

我希望我能有更多的幫助,但希望這會指出你在正確的方向。