如何判斷影片是否具有可變幀速率?我不需要能夠以程式設計方式完成此操作,我只是不想安裝一些數百兆位元組的程式;例如,如果我可以使用 VLC 媒體播放器來實現,那就完美了。
答案1
FFmpeg 有一個 vfrdet 過濾器用於此目的。
ffmpeg -i in -vf vfrdet -an -f null -
在日誌中,您將看到表格的讀數,
[Parsed_vfrdet_0 @ 0000000003d8fec0] VFR:0.833333 (50/10) min: 23 max: 291)
VFR 非零值表示 VFR 流。括號中的第一個值是持續時間與偵測到的流的幀速率所暗示的預期持續時間不同的幀的數量。第二個值是具有預期持續時間的幀數。 VFR 值是第一個數字與兩者總和的比率。
一些注意事項:非常低或非常高的值表示一些具有非標準持續時間的錯誤幀,通常是第一幀和/或最後一幀。對於大多數用途來說,這些可以被視為 CFR。 0.50 左右的值表示流的幀速率和/或時基無法在流的時基中準確表達名義幀持續時間,因此生成文件的應用程序會振盪持續時間,例如,如果流的 fps 為 6時基為1/100,那麼影片第一秒的理想時間戳為0, 16.667, 33.334, 50.000, 66.667, 83.333, 100.000,但時間戳記是整數,因此複用器可以儲存0, 16, 34, 50、67、550、 83、100。
答案2
只要使用 ffprobe
ffprobe -v quiet -print_format json -show_streams input
並檢查avg_frame_rate
所需視訊串流的參數。如果這個參數的值是這樣的分數
"avg_frame_rate": "1205285219/50270287"
如果分母不為 1,則視訊檔案具有可變幀速率。
如果值是這樣的
"avg_frame_rate": "25/1"
確保串流具有恆定的幀速率。
答案3
一個可以用媒體訊息(5 MB,跨平台,在 Windows 上有一個便攜式版本,免費)來判斷影片是否具有可變幀速率: