2016-05-31 15 views
1

x264でエンコードされたムービーの特定のフレーム番号のフレームタイプ(I/B/P)を取得する必要があります。ffmpegを使用して特定のフレームのフレームタイプを取得

ffmpeg/ffprobeを使用してこれを行うにはどうすればよいですか? 私は他のソリューションにもオープンしています。

+0

おそらく、あなたは '-debug vis_mb_type'を使うことができます。これにより、ユニットの種類を標準出力にする必要があります – incBrain

+0

'ffplay video.mp4 -vf showinfo'を実行しようとしましたが、これは全てのpicの種類を画面に表示します。以前のコマンドは何らかの理由でhevcのためにのみ働いた – incBrain

答えて

1

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が必要です。

+0

これは私のために働いた、ありがとう。私はこれを使って終わりました: 'ffmpeg -i input.mkv -vf" select = eq(n \、100)、showinfo -f null - 2>&1 | grep type:| awk '{split($ 16、a、 : "); print a [2]} '' ' – Damnesia

+0

すごいよ、' eq(n、334) 'tnxについて知りませんでした。 – incBrain

0

私が見つかりました。ffprobegrep使用してそれを行うにはどのような方法:

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 
関連する問題