web-dev-qa-db-ja.com

ビデオのフレームレートが可変かどうかはどうすればわかりますか?

ビデオのフレームレートが可変かどうかはどうすればわかりますか?プログラムで実行できる必要はありません。数百メガバイトのプログラムをインストールする必要はありません。たとえば、VLC Media Playerでそれができれば、それは完璧です。

1
Nathan Wailes

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のストリームとして表示される可能性があります。

3
Gyan

Ffprobeを使用するだけです

ffprobe -v quiet -print_format json -show_streams input

そして、目的のビデオストリームのavg_frame_rateパラメータを確認します。このパラメータの値がこのような分数の場合

"avg_frame_rate": "1205285219/50270287"

分母が1でない場合、ビデオファイルのフレームレートは可変になります。

値がこのような場合

"avg_frame_rate": "25/1"

ストリームのフレームレートが一定であることを確認してください。

0
Pistacio