概述
时间戳,DTS(decoding time stamp),PTS(presention time stamp),CTS(current time stamp)。
ffmepg中的时间戳,是以微秒为单位,关乎timebase变量,它是作为dts、pts的时间基准粒度,数值会很大。
其中函数av_rescale_q()是很多的,AV_ROUND_NEAR_INF是就近、中间从零,av_rescale_rnd它是计算a*b/c,传入参数为八字节,为避免溢出,里面做了与INT_MAX的比较,分开计算。将以 "时钟基c" 表示的 数值a 转换成以 "时钟基b" 来表示。
FFmpeg中用AVPacket结构体来描述解码前或编码后的压缩包,用AVFrame结构体来描述解码后或编码前的信号帧。 对于视频来说,AVFrame就是视频的一帧图像。这帧图像什么时候显示给用户,就取决于它的PTS。DTS是AVPacket里的一个成员,表示这个压缩包应该什么时候被解码。 如果视频里各帧的编码是按输入顺序(也就是显示顺序)依次进行的,那么解码和显示时间应该是一致的。可事实上,在大多数编解码标准(如H.264或HEVC)中,编码顺序和输入顺序并不一致。 于是才会需要PTS和DTS这两种不同的时间戳。
最后
以上就是落寞羊为你收集整理的av_rescale_q的全部内容,希望文章能够帮你解决av_rescale_q所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复