ビデオのフレームレートが可変かどうかはどうすればわかりますか?プログラムで実行できる必要はありません。数百メガバイトのプログラムをインストールする必要はありません。たとえば、VLC Media Playerでそれができれば、それは完璧です。
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ストリームを示します。括弧内の最初の値は、ストリームの検出されたフレームレートによって示される予想期間とは異なる期間のフレームの数です。 2番目の値は、予想される期間を持つフレームの数です。 VFR値は、両方の合計に対する最初の数値の比率です。
いくつかの注意点:非常に低い値または非常に高い値は、標準外の期間のいくつかの誤ったフレーム、通常は最初または最後のフレームを示します。これらは、ほとんどの目的でCFRと見なすことができます。 0.50前後の値は、ストリームにフレームレートやタイムベースがあり、概念的なフレーム期間をストリームのタイムベースで正確に表現できないことを示します。そのため、ファイルを生成したアプリは、期間を振動させました。ストリームのfpsが6でタイムベースが1/100の場合、ビデオの最初の1秒間の理想的なタイムスタンプは0、16.667、33.334、50.000、66.667、83.333、100.000ですが、タイムスタンプは整数であるため、マルチプレクサ0、16、34、50、67、83、100を格納できます。これは、VFR値が0.5のストリームとして表示される可能性があります。
Ffprobeを使用するだけです
ffprobe -v quiet -print_format json -show_streams input
そして、目的のビデオストリームのavg_frame_rate
パラメータを確認します。このパラメータの値がこのような分数の場合
"avg_frame_rate": "1205285219/50270287"
分母が1でない場合、ビデオファイルのフレームレートは可変になります。
値がこのような場合
"avg_frame_rate": "25/1"
ストリームのフレームレートが一定であることを確認してください。