2013-08-06 53 views
5

ビデオファイルのキーフレーム間隔を確認するにはどうすればよいですか?キーフレームの間隔を確認していますか?

私はffmpegの出力で見ることができるすべては次のとおりです。

Metadata: 
    metadatacreator : Yet Another Metadata Injector for FLV - Version 1.8 
    hasKeyframes : true 
    hasVideo  : true 
    hasAudio  : true 
    hasMetadata  : true 
    canSeekToEnd : true 
    datasize  : 256600272 
    videosize  : 210054362 
    audiosize  : 45214634 
    lasttimestamp : 5347 
    lastkeyframetimestamp: 5347 
    lastkeyframelocation: 256649267 
    Duration: 01:29:07.24, start: 0.040000, bitrate: 383 kb/s 
    Stream #0:0: Video: h264 (High), yuv420p, 720x304 [SAR 1:1 DAR 45:19], 312 kb/s, 25 tbr, 1k tbn, 50 tbc 
    Stream #0:1: Audio: mp3, 44100 Hz, mono, s16p, 64 kb/s 
+0

関連http://superuser.com/questions/885452/extraction-the-index-of-key-frames-from-a-video-using-ffmpeg –

+0

この情報を出力するにはどのように 'ffmpeg'を取得しましたか?最初の場所?単なる好奇心から。 – user3155368

答えて

7

あなたはffprobeawkで各キーフレームのタイムスタンプを表示することができます。

0.000000 
2.502000 
3.795000 
6.131000 
10.344000 
12.554000 
16.266000 
17.559000 
... 

:中

ffprobe -loglevel error -select_streams v:0 -show_entries frame=key_frame,pkt_pts_time -of csv=print_section=0 input.foo | awk -F',' '/^1,/{print $2}' 

結果詳細は、ffprobe documentationを参照してください。

+0

私の理解によれば、最初のビデオストリームコマンドを選択するには、-select_streams v:0ではなく、0:v:0でなければなりません。私が間違っている? – lucky1928

+0

@ lucky1928あなたは正しいです。私はタイプミスを修正しました( '0:v:0'は' ffmpeg'の構文になります)。 – LordNeckbeard

+0

キーフレームの間隔はこの出力に含まれていますか?私はそれを見ることができません。 – user3155368

1

次のコマンドは、コマンドが少し遅れて反応する可能性があることをビデオ

ffprobe -show_frames -select_streams v:0 -print_format csv Video.mov 2> /dev/null |stdbuf -oL cut -d ',' -f4 | grep -n 1 | stdbuf -oL cut -d ':' -f1 

注意にあなたのすべてのキーフレームのオフセットを与えます。忍耐強く:-)

ffprobeコマンドは、CSV形式でフレームレベルの詳細を示します。休憩は、cutgrepコマンドのスマートな組み合わせです。

cut -d ',' -f4 

は、4番目の列をフィルタリングします。これは 'key_frame'フラグを参照します。

grep -n 1 

は、キーフレームのみをフィルタリングし、CSVフィードの行番号を表示します。 cutコマンドで

stdbuf -oL 

カットコマンドのバッファを操作します。

関連する問題