时间戳

原创 2015年11月17日 19:16:47

下面这些话,对时间戳的解释真的是很通俗易懂!!!!


媒体内容在播放时,最令人头痛的就是音视频不同步。

从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);

生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);

在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间,则不急于播放该数据块,直到参考时钟达到数据块的开始时间;如果数据块的开始时间小于当前参考时钟上的时间,则“尽快”播放这块数据或者索性将这块数据“丢弃”,以使播放进度追上参考时钟)。可见,避免音视频不同步现象有两个关键。


第一个关键的地方,就是在生成数据流时要打上正确的时间戳。

如果数据块上打的时间戳本身就有问题,那么播放时再怎么调整也于事无补。

假如,视频流内容是从0s开始的,假设10s时有人开始说话,要求配上音频流,那么音频流的起始时间应该是10s,如果时间戳从0s或其它时间开始打,则这个混合的音视频流在时间同步上本身就出了问题。

打时间戳时,视频流和音频流都是参考参考时钟的时间,而数据流之间不会发生参考关系;

也就是说,视频流和音频流是通过一个中立的第三方(也就是参考时钟)来实现同步的。


第二个关键的地方,就是在播放时基于时间戳对数据流的控制,也就是对数据块早到或晚到采取不同的处理方法。

假设你和你的一个朋友约好了今天18:00在沪上广场见面,然后一起吃饭,再去打游戏。

实际上,这个18:00就是你和你朋友保持同步的一个时间点。结果你17:50就到了沪上广场,那么你必须等你的朋友。

10分钟过后,你的朋友还没有到,这时他打来电话说有事耽搁了,要晚一点才能到。

你没办法,因为你已经在旁边的餐厅预订了位置,如果不马上赶过去,预订就会被取消,于是你告诉你的朋友直接到餐厅碰头吧,要他加快点。于是在餐厅将来的某个时间点就成为你和你朋友的又一个同步点。

虽然具体时间不定(要看你朋友赶过来的速度),但这样努力的方向是对的,你和你朋友肯定能在餐厅见到面。

结果呢?你朋友终于在18:30赶过来了,你们最终“同步”了。

吃完饭19:30了,你临时有事要处理一下,于是跟你朋友再约好了20:00在附近的一家游戏厅碰头。

你们又不同步了,但在游戏厅将来的某个时间点你们还是会再次同步的。


悟出什么道理了没有?其实,同步是一个动态的过程,是一个有人等待、有人追赶的过程。同步只是暂时的,而不同步才是常态。人们总是在同步的水平线上振荡波动,但不会偏离这条基线太远。


版权声明:研究技术的朋友,多多分享:-) 举报

相关文章推荐

返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)