rtsp 的时戳

338380阅读 1评论2019-12-06 pppstar
分类:C/C++

这里主要关注的rtp包的时间戳,在rtsp中,播放器的1S钟的定义是和媒体的采样率有关的。

例如视频的采样率是90K,那么最小时间粒度(单位)是1/90000秒,再转换成ms就是 1/90毫秒,这个就是rtsp中的最小时间单位。

所以设备端采集的视频的时间要经过一个转换,标准的播放器才能播放

还是以90K的视频为例,设备采集到的单位是按时间tv_sec,tv_usec存储。

/* timestamp convert
    t(rtsp时间戳,单位ms) =  t(采集时间戳,单位秒)*90000
    */
    unsigned int tv_sec, tv_usec, pts;
    tv_sec = ts / 1000;
    tv_usec = (ts % 1000) * 1000;
    pts = tv_sec * 90000 + tv_usec *9 / 100;

 

对应的如果是8K采样率的音频,则转化公式是:

    /* timestamp convert
    t(rtsp时间戳,单位ms) =  t(采集时间戳,单位秒)*8000
    */
    tv_sec = ts / 1000;
    tv_usec = (ts % 1000) * 1000;
    pts = tv_sec * 8000 + tv_usec *8/1000;

 

上一篇:Git冲突:commit your changes or stash them before you can merge. 解决办法
下一篇:ubuntu1604 aclocal-1.14: 未找到命令 与 Can't exec "libtoolize"

文章评论