我是靠谱客的博主 淡然八宝粥,最近开发中收集的这篇文章主要介绍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

时间戳增量伪代码

//视频时间戳增量
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时间戳分析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部