我是靠谱客的博主 淡然八宝粥,这篇文章主要介绍RTP时间戳分析RTP时间戳分析,现在分享给大家,希望可以做个参考。

RTP时间戳分析

概念分析

采样率:采样率就是每秒钟抽取图像或声波幅度样本的次数。比如音频采样率8k,表示1秒有8000次采样,视频很少提及采样率这个概念。    

帧率:帧率就是每秒显示帧数。比如30fps标识1秒显示30帧图像,音频没有帧率但可以算出帧率:采样率/1024。  

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

时间戳增量:相邻两个RTP包之间的时间差(以时间戳单位为基准)。  

1、视频时间戳分析

视频帧率是25(FPS),采样率是90KHZ(视频很少使用采样率这个概念每秒钟抽取图像样本的次数)。

两视频帧的间隔为:1 秒/ 25帧 = 0.04(帧/秒) = 40(毫帧/秒)

时间戳增量单位:1/90000(秒/个) ,特别注意RTP时间戳是有单位的

每帧对应的采样: 90000 / 25 = 3600 (个/帧)

对应关系如下:

时间

符号

个数

1(秒)

等于

90000(个)

40(毫秒)等于3600(个)

1(毫秒)

等于

90(个)

视频时间戳计算公式:时间戳增量 = 两个RTP包时间差(毫秒)* 90000(采样率) / 1000

2、音频分析

时间戳增量单位:1/32000(秒/个) ,特别注意RTP时间戳是有单位的

对应关系如下:

时间

符号

个数

1(秒)

等于

32000(个)

1(毫秒)

等于

32(个)

音频时间戳计算公式:时间戳增量 = 两个RTP包时间差(毫秒)* 32000(采样率) / 1000

时间戳增量伪代码

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//视频时间戳增量 private uint GetVideoTimestamp(MediaFrame mediaFrame) { if (视频时间戳== 0) { 视频时间戳 = mediaFrame.采集时间戳; return 0; } else { var step = mediaFrame.采集时间戳 - 视频时间戳; 视频时间戳 = mediaFrame.采集时间戳; return step * 90000 / 1000; } } //音频时间戳增量 private uint GetAudioTimestamp(MediaFrame mediaFrame) { if (音频时间戳== 0) { _timestampAudio = mediaFrame.采集时间戳; return 0; } else { var step = mediaFrame.采集时间戳 - 音频时间戳; 音频时间戳 = mediaFrame.采集时间戳; return step * 采样率 / 1000; //采样率可以从ADTS Header中算出来 } }

最后

以上就是淡然八宝粥最近收集整理的关于RTP时间戳分析RTP时间戳分析的全部内容,更多相关RTP时间戳分析RTP时间戳分析内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(145)

评论列表共有 0 条评论

立即
投稿
返回
顶部