概述
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
时间戳增量伪代码
//视频时间戳增量
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时间戳分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复