ffmpeg を使用してビデオ ファイルから合計フレーム数を取得する方法をご存知の方はいらっしゃいますか? ffmpeg のレンダリング出力には現在のフレームが表示され、進行状況をパーセントで計算するにはフレーム数が必要です。
ベストアンサー1
ffプローブ
ffprobe -v error -select_streams v:0 -count_packets \
-show_entries stream=nb_read_packets -of csv=p=0 input.mp4
これは実際にはフレームではなくパケットをカウントしますが、はるかに高速です。結果は同じになるはずです。フレームをカウントして検証する場合は、を および に変更-count_packets
します。-count_frames
nb_read_packets
nb_read_frames
ffprobeオプションの意味
-v error
これにより、「情報」出力 (バージョン情報など) が非表示になり、解析が容易になります (ただし、重要な情報が非表示になるため、ヘルプを要求した場合には難しくなります)。-count_frames
ストリームごとのパケット数をカウントし、対応するストリーム セクションで報告します。-select_streams v:0
最初のビデオ ストリームのみを選択します。-show_entries stream=nb_read_packets
のエントリのみを表示しますnb_read_frames
。-of csv=p=0
出力フォーマットを設定します。この場合、説明は非表示になり、値のみが表示されます。FFprobe ライターJSON を含む他の形式に関する情報。
キーフレームのみをカウントする
MP4 編集リスト
MP4/M4V/M4A/MOV に編集リストが存在すると、フレーム数に影響する可能性があります。
こちらもご覧ください
メディア情報
よく知られているmediainfo
ツールはフレームの数を出力できます:
mediainfo --Output="Video;%FrameCount%" input.avi
MP4ボックス
MP4/M4V/M4A ファイル用。
MP4Box
gpac からはフレーム数を表示できます:
MP4Box -info input.mp4
Media Info
問題となっているビデオ ストリームの出力の行を参照してください。
Media Info: Language "Undetermined (und)" - Type "vide:avc1" - 2525 samples
この例では、ビデオ ストリームには 2525 フレームがあります。
ボックスダンパー
MP4/M4V/M4A/MOV ファイル用。
boxdumper
は、l-smash のシンプルなツールです。大量の情報を出力します。stsz
サンプル サイズ ボックスのセクションでsample_count
、フレーム数を参照してください。この例では、入力には 1900 のビデオ フレームがあります。
boxdumper input.mp4
...
[stsz: Sample Size Box]
position = 342641
size = 7620
version = 0
flags = 0x000000
sample_size = 0 (variable)
sample_count = 1900
- ファイルには複数の
stsz
アトムが含まれる場合があることに注意してください。