使用ffmpeg 的同學,有的時候可能對tbr ,tbc tbn 的含義有些不太理解柑土,并且不知道怎么對應里面的數(shù)據(jù)結構
我下面列舉了幾個例子,這樣便于大家理解
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 相關數(shù)據(jù)打印如下:
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);
打印出來效果如下: