【发布时间】:2014-05-24 06:26:58
【问题描述】:
我是新手。希望能找到一些有用的链接或资源来解决我的困惑。 对于普通的视频文件编码,比如mp4文件,需要在编码结束时插入moov atom。
对于实时视频流,每个数据包中的帧可以自行播放,无需 moov atom。
那么上面两者在编码上有什么区别呢?
【问题讨论】:
标签: video-streaming video-encoding live-streaming
我是新手。希望能找到一些有用的链接或资源来解决我的困惑。 对于普通的视频文件编码,比如mp4文件,需要在编码结束时插入moov atom。
对于实时视频流,每个数据包中的帧可以自行播放,无需 moov atom。
那么上面两者在编码上有什么区别呢?
【问题讨论】:
标签: video-streaming video-encoding live-streaming
有编解码器和容器。通常,直播和 vod(视频点播)的编解码器是相同的。这有一些例外,但与本次讨论无关。
MP4 容器(不是编解码器)使用 moov atom,其中包含有关文件中时间、帧大小和位置(以字节为单位)的元数据。这使得在文件中移动变得非常容易(就像索引数据库可以轻松搜索一样)。实时容器不这样做。例如,FLV 每帧使用一个“标签”,其中帧的元数据与帧本身一起存储。这通常会创建稍大的文件。这也使得在文件中查找变得困难。如果没有索引,如果我想提前 60 秒应该跳过多少字节?就像一个未索引的数据库一样,我需要查看每条记录(帧)来确定这一点。但这使得可以跳到中间并开始播放,而无需事先信息。这是我们直播视频所需要的特质。
还有一种混合方法用于分段 ISO (mp4) 文件。每隔几秒就有一个单独的索引。在这种情况下,元数据原子称为 moof。
【讨论】: