ffmpegでフレーム数を取得する 質問する

ffmpegでフレーム数を取得する 質問する

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_framesnb_read_packetsnb_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 ファイル用。

MP4Boxgpac からはフレーム数を表示できます:

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アトムが含まれる場合があることに注意してください。

おすすめ記事