ffmpegですべてのフレームのタイムスタンプを抽出する

ffmpegですべてのフレームのタイムスタンプを抽出する

質問1.ffmpegタイムスタンプ (ビデオの開始からのミリ秒単位の時間) に関連付けられた各フレーム番号を抽出するには、どのコマンドを使用すればよいですか?

期待される結果 :

frame, ts
1, 34
2, 67
3, 101
4, 123
...

質問2.これらのタイムスタンプは、フレームを指すキーとして使用しても安全ですか?

言い換えれば、ffmpeg同じことを行うために他のツールを使用した場合、まったく同じタイムスタンプが得られますか。


材料:http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4

答え1

A1走れば近づくことができます

ffprobe video.mp4 -select_streams v -show_entries frame=coded_picture_number,pkt_pts_time -of csv=p=0:nk=1 -v 0

出力は

0.000000,0
0.040000,3
0.080000,2
0.120000,4
0.160000,1
0.200000,7
0.240000,6
0.280000,8
0.320000,5

提示されたフレームnはオンラインですn(1 から始まります)。

最初の列は秒単位のタイムスタンプ、2 番目の列はフレームのエンコードとデコード、およびファイル保存の順序です。

A2そうなるはずです。他のソフトウェアは開始オフセットを削除するかもしれませんが、ffprobe は削除しません。他のソフトウェアは、オーディオの遅延や編集リストなどを考慮してタイミングを調整する場合があります。

関連情報