-----------------------------------------------------------------------------------------------------------------------------------------
一分钟快速搭建 rtmpd 服务器: https://blog.csdn.net/freeabc/article/details/102880984
软件下载地址: http://www.qiyicc.com/download/rtmpd.zip
github 地址:https://github.com/superconvert/smart_rtmpd
-----------------------------------------------------------------------------------------------------------------------------------------
1. 采样率
我们知道音视频都有个自己的采样率,比如常见的: aac 44100, h264 90000,采样率具体是什么意思呢?采样率是一个基准,我们可以把这个基准看成一个时钟 TICK或者成为一个 Sample。 aac 44100 表示音频每秒时间内有 44100 个采样 TICK 。视频的基准就是每秒90K个时钟TICK。为什么采用90K呢?目前视频的帧频率主要有25fps、29.97fps、30fps等,而90K刚好是他们的倍数,所以就采用了90K。采样率对于解码和播放端非常重要,我们在协商过程中用的 SDP 中,经常有字段对此有表达,既然把这个参数放到 SDP 中,足见这个参数值是不可缺失的,参考下面的例子:
SDP中
a=rtpmap:96 H264/90000
a=rtpmap:97 mpeg4-generic/44100/2
2. 帧率
我们编码基本是一帧为单位,编码后的一帧数据经过打包发送,对方接收到进行解码播放,基本上就是这么一个流程。对应音频说帧的概念是针对编码来讲的。
aac 的采样
PROFILE | SAMPLES |
---|---|
HE-AAC v1/v2 | 2048 |
AAC-LC | 1024 |
AAC-LD/AAC-ELD | 480/512 |
我们很多文章把 aac 的采样都归为 1024,严格来说是不对的,但现在最流行的就是这个采样大小。我们知道这个采样大小,基本上就可以算出 1 秒中可以采集有 aac 编码的多少帧了, 我们知道当采样率为 44100 ,编码为 aac-lc,那么一秒中的帧数就是
44100/1024= 43.06640625 帧。也就是说,此 aac 帧率 43.06 fps 但我们基本上很少关心这个数的,这里只是简单的阐述一下。
视频的采样是个基数,常见的帧率 25 fps, 29.97 fps, 30 fps ,这个表示一秒中可以采集那么多帧。这个值还是比较关心的。我们解码,调整速率都有用。
3. Duration 时延
我们这里所说的时延就是采集一帧数据所用的时间,由于我们的音视频时间单位都是毫秒级的,这里以毫秒为单位:ms。
那么对于音频的采样率为 44100 ,编码为 aac-lc时延怎么算呢,根据上述的表格,我们知道 aac-lc 的采样个数是 1024,所以音频一帧的 Duration=1024*1000/44100 = 23.21995464852607709750566893424 ( ms ).
对于视频我们的时延计算更简单了。如果视频是 25 fps,那么视频一帧的 Duration = 1000/25 = 40 ( ms ). 如果视频是 30 fps,那么视频一帧的 Duration = 1000/30 = 33.3 ( ms )
Duration 非常关键,对于我们的 RTP 时间戳的增量,就是两帧之间的 TICK 数。具体算法就是我们每帧的时长 * 采样率。那么对于采样率 44100, 编码 aac-lc ,每帧的时长 ( 1024 / 44100 ) * 采样率 ( 44100 ) = 1024 ( TICK ) ,因此我们的音频每帧之间 aac 时间戳增量为 1024, 对于 25 fps 的视频来说,每帧的时长(1/25 ) * 采样率(90000)= 3600 ( TICK ),那么我们的视频每帧之间 RTP 时间戳增量就为 3600,如果在传输过程中,这些值算的不对,就会导致很多问题,比如:音视频不能正确播放,音视频不能正确同步。对于文件的存储,也是参考这个值,否则,写入的视频文件,也不能正确播放。
有些额外的链接可以参考一下,
频率史—从电源频率到音频采样频率与视频帧率:29.97/44.1
https://zhuanlan.zhihu.com/p/131647757