ffmpeg 的 tbr tbc 和 tbn的意义

使用ffmpeg 的同学,有的时候可能对tbr ,tbc tbn 的含义有些不太理解,并且不知道怎么对应里面的数据结构

我下面列举了几个例子,这样便于大家理解

ffmpeg 的 tbr tbc 和 tbn的意义_第1张图片

tbn= the time base in AVStream that has come from the container

tbc= the time base in AVCodecContext for the codec used for a particular stream

tbr= tbr is guessed from the video stream and is the value users want to see when they look for the video frame rate

25  tbr代表帧率;

12800 tbn代表文件层(st)的时间精度,即1S=12800,和duration相关;

50   tbc代表视频层(st->codec)的时间精度,即1S=50,和strem->duration和时间戳相关。

便于理解,下图为我打印的解码后的时间戳 也就是 视频是25帧 的, 1S = 50 ;

ffmpeg 的 tbr tbc 和 tbn的意义_第2张图片

拉取了一个微信的小视频分析了一下:

ffmpeg 的 tbr tbc 和 tbn的意义_第3张图片

便于大家理解,ffmpeg 相关数据打印如下:

intstream_index = pkt->stream_index;  (如果使用ffmpeg 的人肯定可以看懂了,我就不详细解释了)

LOGV("checkinpts_index_%d_rescale_ inpts %lldoutpts = %lldstreams.den=%d streams.num=%d codec.den=%d codec.num=%d \n",stream_index,inpts2,outpts2,\

ctx->streams[stream_index]->time_base.den,ctx->streams[stream_index]->time_base.num,\

ctx->streams[stream_index]->codec->time_base.den,ctx->streams[stream_index]->codec->time_base.num);

打印出来效果如下:


ffmpeg 的 tbr tbc 和 tbn的意义_第4张图片

你可能感兴趣的:(ffmpeg 的 tbr tbc 和 tbn的意义)