码迷,mamicode.com
首页 > 其他好文 > 详细

时间戳杂谈(二)

时间:2014-07-29 14:48:38      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:使用   文件   for   时间   不同的   text   用户   ad   

时间戳由时间基准和时间戳值组成。

时间基准:对时间单位(s)划分的标准。

例如,1/25表示每秒分为25个单位,每个单位时间间隔包含1个单位。

3001/90000表示每秒分为90000单位,每个单位时间间隔包含3001个单位。

时间戳值:基于时间基准的时间表示,也即多少个单位时间间隔。


1)时间戳的作用是用于精确标记音视频流的相对位置和持续时间。

2)基于时间基准使用时间戳,而不是直接使用整数值的意义在于,时间戳可以避免不能够整除的情况。

3)不同的时间基准之间的时间戳转换存在误差,应该避免不必要的转换。

如果的确需要转换,应该保证转换后的时间戳不小于转换前。

4)不同时间基准直接的时间戳比较,应该首先转换到划分更细的单位上(1/1hns)进行。

5)系统时钟相当于1/1000的时间戳,音视频播放同步,实际就是流自身的时间戳与系统时间戳的一个比较。

由于时间戳转换存在误差,所以播放同步实际也是存在误差。所以不要纠结于等号,而是尽量设置一个可容忍的误差时长。



ffmpeg中时间戳转换

AVFormatContext->AVPacket ->AVFrame ->AVPacket->AVFormatContext

     AVStream        AVCodecContext          AVStream

解码过程:由于AVStream与AVCodecContext是AVFormatContext在文件解析过程创建的,因此两者的time_base应该是一致的。

AVPacket到AVFrame的时间戳值不变。

编码过程:AVCodecContext的time_base由用户设置(默认是1/90000),AVStream中的time_base是默认值1/90000(ffmpeg在write_header会修改以匹配AVCodecContext值),两者值不一定相等,因此需要进行时间戳值转换。

时间戳杂谈(二),布布扣,bubuko.com

时间戳杂谈(二)

标签:使用   文件   for   时间   不同的   text   用户   ad   

原文地址:http://blog.csdn.net/neustar1/article/details/38235113

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!