我正在从事在线电视服务。其中一个目标是在没有任何其他浏览器插件的情况下播放视频(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