据我所知,Android和iOS设备中的视频播放器以视频编码速率解码流媒体内容。 视频编码和播放速率之间是否有任何关系?也就是说,正常播放(不使用x2,x0.5等设置)也会以编码率出现吗?
如果没有,那么如何定义播放速率?
谢谢! 问候, 约翰
答案 0 :(得分:1)
我不完全确定你在这种情况下的编码率是什么意思,但它可能有助于理解大多数视频编码格式包括两个时间概念:
如果你看一些讨论,你会经常看到提到的PTS和DTS - 这些是解码时间戳和帧的显示时间戳。
演示时间戳很容易理解 - 这是需要显示帧的时间,以便观众按预期看到视频。
存在解码时间戳的原因还在于,许多编码器通过参考帧来压缩帧,并通过它们相对于这些帧的变化来描述其他帧。对于背景保持相当稳定的帧,这可以节省相当大的带宽,如您所想。
参考帧可以是前向和后向 - 换句话说,给定帧“X”可以通过参考来自帧“X-3”和“X + 3”的增量来描述。
这意味着视频播放器在想要呈现帧X时需要具有帧“X + 3”,因此解码帧“X + 3”所需的时间早于它需要呈现帧的时间
在经典的ffmpeg教程中有一个很好的描述:http://dranger.com/ffmpeg/tutorial05.html
本教程中的图表有助于以图形方式解释 - P帧是参考帧,B帧是它们与参考帧的差异所描述的帧:
PTS: 1 4 2 3 DTS: 1 2 3 4 Stream: I P B B
I帧是一个完整的图像,P帧是基于前一个I帧的增量,B帧是增量,它们取决于前一帧和后一帧中的信息。
观众将(希望!)按照PTS时间的顺序观看视频:即上例中的1,2,3,4,但帧需要按照DTS的顺序进行解码,它也是有意义的是按顺序流式传输它们。