• 时间戳和时间尺度


    这里将有关时间戳的几个概念介绍如下:

    采样频率 是每秒钟抽取声波幅度样本的次数: 8000
    帧率        是每秒显示帧数: 20

    时间戳单位:时间戳计算的单位不为秒之类的单位,而是由采样频率所代替的单位,这样做的目的就是为了是时间戳单位更为精准。比如说一个音频的采样频率为8000HZ,那么我们可以把时间戳单位设为1/8000。
    时间戳增量:相邻两个RTP包之间的时间差(以时间戳单位为基准)。

    如何设定时间戳之间的增量呢?
    按照刚才时间戳单位来看,1秒钟按照时间戳单位就是8000,那么一秒钟如果可以播放20帧,也就是发送20帧(帧率),那么可以求出相邻两帧之间的时间差,也就是时间戳增量,那么显而易见是用8000/20,那么这个时间戳增量就为400。

    音频如果采用频率是8000HZ 那么时间戳单位就是1/8000 ,时间戳单位就是1/8000 这个1 就是指1s,说白了就是每个声波幅度样本的时间间隔是 1/8000s。

    帧率是 20那么时间戳增量就是 8000/20=400(现在每秒采样的声音样本数是8000个,每秒播放20帧那么每帧包含的声音样本就是400个)时间戳增量就是400,如果换做系统时间 就是 400*(1/8000)  每帧间隔1/20s

    网上大多数列举的一个例子是:例如MPEG,每帧20ms,采样频率8000Hz,设定时间戳单位1/8000,而每个包之间就是160的增量
    这里又该如何理解呢?可以轻易地看出增量是直接8000与20ms相乘的结果,我们可以知道这里两帧之间的时间为20ms,也就是0.02s,这个单位是以秒来衡量的,那么我们要用时间戳单位来表示那么就是8000*0.02=160.所以时间戳增量为160。

    还有一点为什么一般都用90000作为视频采样频率呢?

    90k是用于视频同步的时间尺度(TimeScale),就是每秒90k个时钟tick。为什么采用90k呢?目前视频的帧速率主要有25fps、29.97fps、30fps等,而90k刚好是它们的倍数,所以就采用了90k。

  • 相关阅读:
    19.1.25 [LeetCode8]String to Integer (atoi)
    19.1.23 CJK Round 1A 2015
    19.1.22 CJK Qualification Round 2015
    【转载】超级弹丸论破2再见绝望学园攻略
    19.1.20 [LeetCode 7]Reverse Integer
    19.1.20 [LeetCode 6]ZigZag Conversion
    19.1.20 [LeetCode 5]Longest Palindromic Substring
    python socket-select io多路复用
    web框架 源码
    python socket
  • 原文地址:https://www.cnblogs.com/elisha-blogs/p/3951376.html
Copyright © 2020-2023  润新知