x264でエンコードされたムービーの特定のフレーム番号のフレームタイプ(I/B/P)を取得する必要があります。ffmpegを使用して特定のフレームのフレームタイプを取得
ffmpeg/ffprobeを使用してこれを行うにはどうすればよいですか? 私は他のソリューションにもオープンしています。
x264でエンコードされたムービーの特定のフレーム番号のフレームタイプ(I/B/P)を取得する必要があります。ffmpegを使用して特定のフレームのフレームタイプを取得
ffmpeg/ffprobeを使用してこれを行うにはどうすればよいですか? 私は他のソリューションにもオープンしています。
ffmpeg直接
ffmpeg -i input.mp4 -vf select='eq(n,334)',showinfo -f null -
上記選択したフィルタをスキップして、すべてのフレームのための出力を取得し、@incBrainが行うようgrepすることができ、ビデオ
n: 0 pts: 171008 pts_time:11.1333 pos: 1090471 fmt:yuv420p sar:1/1 s:1280x720 i:P iskey:0 type:B checksum:A72D197D plane_checksum:[9008E835 680AC49A 6CD66C90] mean:[136 122 134] stdev:[65.4 7.0 9.5]
の第三百三十五フレーム用の出力を生成します。コード化されていないdisplay picture number
が必要です。
私が見つかりました。ffprobe
とgrep
使用してそれを行うにはどのような方法:
pict_type=I
coded_picture_number=0
pict_type=B
coded_picture_number=3
pict_type=B
coded_picture_number=2
pict_type=P
coded_picture_number=1
pict_type=B
coded_picture_number=6
...
は、特定のフレーム(例えば、フレーム8のフレームタイプを取得するには:これは、このような出力を生成
を$ ffprobe video.mp4 -show_frames | grep -E 'pict_type|coded_picture_number'
)これを以下に拡張することができます:
$ ffprobe video.mp4 -show_frames | grep -w -E 'coded_picture_number=8' -B 1
pict_type=P
coded_picture_number=8
おそらく、あなたは '-debug vis_mb_type'を使うことができます。これにより、ユニットの種類を標準出力にする必要があります – incBrain
'ffplay video.mp4 -vf showinfo'を実行しようとしましたが、これは全てのpicの種類を画面に表示します。以前のコマンドは何らかの理由でhevcのためにのみ働いた – incBrain