【问题标题】:What difference between encoding in live video streaming and in a regular video file encoding?实时视频流编码和常规视频文件编码有什么区别?
【发布时间】:2014-05-24 06:26:58
【问题描述】:

我是新手。希望能找到一些有用的链接或资源来解决我的困惑。 对于普通的视频文件编码,比如mp4文件,需要在编码结束时插入moov atom。

对于实时视频流,每个数据包中的帧可以自行播放,无需 moov atom。

那么上面两者在编码上有什么区别呢?

【问题讨论】:

    标签: video-streaming video-encoding live-streaming


    【解决方案1】:

    有编解码器和容器。通常,直播和 vod(视频点播)的编解码器是相同的。这有一些例外,但与本次讨论无关。

    MP4 容器(不是编解码器)使用 moov atom,其中包含有关文件中时间、帧大小和位置(以字节为单位)的元数据。这使得在文件中移动变得非常容易(就像索引数据库可以轻松搜索一样)。实时容器不这样做。例如,FLV 每帧使用一个“标签”,其中帧的元数据与帧本身一起存储。这通常会创建稍大的文件。这也使得在文件中查找变得困难。如果没有索引,如果我想提前 60 秒应该跳过多少字节?就像一个未索引的数据库一样,我需要查看每条记录(帧)来确定这一点。但这使得可以跳到中间并开始播放,而无需事先信息。这是我们直播视频所需要的特质。

    还有一种混合方法用于分段 ISO (mp4) 文件。每隔几秒就有一个单独的索引。在这种情况下,元数据原子称为 moof。

    【讨论】:

    • 谢谢。这些信息很有帮助。那么对于直播来说,编码是否有所有类型的帧,所以直播的播放需要几帧缓冲区来解码和播放,从而导致延迟,对吧?
    • 这取决于,对于极低的延迟,B 帧被省略,因为它增加了生存时间延迟。 I 帧的放置不会影响生存时间延迟,但会对加载时间产生巨大影响,因为 P/B 帧会被丢弃,直到遇到 iframe。
    • 谢谢。我认为延迟帧数应该是出现 I/P 帧以进行 B 帧解码时的后续帧数。例如,IBBPBBPBBPBB……延迟是2,对吧?或者你能给我一些我可以学习的好链接吗?谢谢!
    • 是的。延迟是在解码顺序中引用后面 B 帧的前面 P 帧的数量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多