ffprobe または同様のコマンドライン ツールを使用して、GOP ごとのビデオ ビットレートを調べる方法はありますか?
ffprobe は、ビデオ全体の全体的なビットレートのみ出力し、パケットは出力しないようです。
ffprobe -i video.mp4 -show_entries packets
これは写真のグループだと思います。
[PACKET]
codec_type=video
stream_index=0
pts=126976
pts_time=9.920000
dts=126464
dts_time=9.880000
duration=512
duration_time=0.040000
convergence_duration=N/A
convergence_duration_time=N/A
size=6229
pos=5648590
flags=__
[/PACKET]
答え1
パケットは画像のグループではありません。コンテナに応じて、パケットは 1 つのフレームのみ、またはフレームの一部のみを含むこともあります。
代わりに、キーフレームを含むパケットがあるかどうかを確認する必要があります。flags
属性を確認します。 が含まれている場合K
、これが GOP の開始です。 パケット DTS を覚えておき、次のキーフレームに到達するまで属性を合計しsize
、その合計をタイムスタンプのデルタで割るか、 の合計で割りますduration_time
。
これにより、パケット化のオーバーヘッドを含む GOP あたりのビットレートがわかります。