我正在從事在線電視服務。其中一個目標是在沒有任何其他瀏覽器插件的情況下播放視頻(Flash除外)。通過MP4實時流式傳輸
我決定使用MP4,因爲它受到大多數HTML5瀏覽器和Flash(用於回退)的支持。視頻由FFMpeg從服務器上的ASF轉碼。
但是,我發現MP4無法實時流式傳輸,因爲它具有用於指定長度的元數據的moov原子。 FFMpeg不能直接將mp4傳輸到標準輸出,因爲它將moov放在文件末尾。 (Live transcoding and streaming of MP4 works in Android but fails in Flash player with NetStream.Play.FileStructureInvalid error)
當然,MPEG-TS存在,但它不被HTML5 <video>
支持。
我想到的是一種將流實時轉碼爲MP4的方法,並且在每個新的HTTP請求上,首先發送一個moov,指定視頻長度的非常長的數字,然後開始發送MP4文件的其餘部分。
是否有可能使用MP4流式傳輸?
經過一番研究和av501的回答,我明白幀的大小必須是已知的,以便它可以工作。
mp4文件可以被分割成更小的部分,以便它可以流式傳輸?
當然,切換到另一個容器/格式是一種選擇,但與Flash和HTML5兼容的唯一格式是mp4/h264,所以如果我必須同時支持這兩種格式,我必須進行兩次轉碼。
這裏有一個很好的解釋,開始聽起來像rtmp或一些自定義協議的路要走http://fabiensanglard.net/mobile_progressive_playback/index.php –
你的答案有告誡,它已經寫在上面。時間就是流媒體和播放的問題。所以-1 – agfe2