ffmpeg:提取幀並獲取其準確的時間戳

ffmpeg:提取幀並獲取其準確的時間戳

我正在嘗試從中提取幀可變幀率每 5 秒播放一次視頻,並獲取提取的每一幀的準確時間戳。到目前為止,這是我所擁有的:

-i inputfile -vstats_file vstats.log  -vsync 2 -vcodec png -r 0.2 -f image2pipe -

這就是我得到的:

frame=     1 q= 0.0 f_size= 136261 s_size=      133kB **time= 5.000** br=   218.0kbits/s avg_br=   218.0kbits/s type= I
frame=     2 q= 0.0 f_size= 139382 s_size=      269kB **time= 10.000** br=   223.0kbits/s avg_br=   220.5kbits/s type= I
frame=     3 q= 0.0 f_size= 141631 s_size=      407kB **time= 15.000** br=   226.6kbits/s avg_br=   222.5kbits/s type= I

我需要用於提取的幀的準確時間戳,以便稍後我可以根據生成的縮圖準確地剪切視頻。

另外,有沒有辦法將 vstats 列印到標準輸出而不是檔案?

答案1

我不確定你想做什麼,但如果它對你有用那就沒關係......

無論如何,對於跳幀我會使用選擇視訊過濾器(確保您啟用了 libavfilter)。對於框架資訊我會使用秀文資訊視訊過濾器。

您的命令應該類似於以下內容:

ffmpeg -i inputfile -vf '[in]select=not(mod(n\,150))[s1];[s1]showinfo[out]' -vcodec mpeg2video outputfile

(其中 150 幀為 5 秒 * 30 fps)

相關內容