什么是“支持流媒体”的A / V容器格式?

时间:2012-01-17 20:39:38

标签: streaming containers multimedia

Matroska和MPEG-4 Part 14的流媒体容器文件格式与那些据称不像“流媒体就绪”的容器文件格式(如AVI)完全区别是什么?

他们只是提供元数据和数据的排序,使得解码软件能够在不随机访问媒体文件或大缓冲区的情况下工作,或者它们是否包含一些同步头以使客户端能够容忍一定量的数据包丢失(降低保真度)?

或者甚至是一个必须由音频和视频编解码器而不是容器提供的功能? (我猜不是,因为MPEG-4(A)SP似乎在MPEG-4 Part 14容器内是可流式传输的(无论如何),但不是在AVI内部。)

我想知道是否可以通过有损连接发送“流式就绪”文件(没有任何其他同步或元数据层的UDP),并且合理地期望客户端能够容忍中等数据包损坏和/或丢失而不会永久失去同步,或者是否需要一些中间层。

更新 我发现MPEG传输流似乎提供周期性同步和元数据帧等功能,使客户端能够从数据丢失或损坏中恢复,而MP4和Matroska似乎只在文件的头部提供了这些信息。

是否真的有两种流式传输格式,“可流式传输”仍然需要可靠的传输协议(例如HTTP),如MP4和Matroska,以及“适当”的流式传输格式,如MPEG-TS,可以容忍中期的数据丢失-stream,并允许客户端通过定期包含标头和元数据在任何时间点收听?

RTP如何适应这里?它似乎提供了许多功能(帧编号,格式描述标题,编解码器关于如何解释帧(B或I帧)的提示),这些功能也存在于MPEG-TS中,但在MP4和Matroska中不存在

1 个答案:

答案 0 :(得分:4)

像AVI这样的文件格式在专用索引中提供了不同媒体块偏移和长度的完整编译。此索引位于文件的末尾。因此,如果你想玩AVI,播放器需要首先到达文件的末尾以获得该索引,然后才能进行任何游戏。这就是使AVI流畅的原因。

streamable 文件格式中,元数据(媒体类型,时间位置,编码和长度)主要以段的标题形式交错。

streambale内容的第二个重要方面是有时间戳。每个媒体片段必须有一个准确的时间戳,以确保如果您说话时间为5小时 - 由于音频和视频播放速率之间的相对滑动,它不应导致LipSync逐渐丢失。 AVI通常假设有一个标准速率(25 fps)的显示和音频播出,并留给设备随时间管理。这太可怕了!