2017-07-26 10 views
1

私はMP4ファイルとそのファイルから16kbの抜粋を持っています。抜粋がどのフレームに一致しているかを知りたい。私は抜粋のオフセットを見つけることができますが、私はMP4エンコーディングが可変長であると信じています(「この抜粋はフレーム#(オフセット/フレームサイズ)からです」と言うことはできません)それはまた私の抜粋が有効なフレーム境界ですので、 "excerpt.mp4"に名前を変更して再生することはできません。MP4の抜粋を動画のフレームに関連付けるにはどうすればよいですか?

抜粋に対応するフレームを確認するには、どのような方法が良いですか?

+0

抜粋ストリームがセグメントをコピー(再多重化)または再エンコードされていますか? – LordNeckbeard

+0

いいえ、それは元のMP4ファイルの生の範囲のバイトです - MPEGフレームやコーディングストリームから完全に切り離されています。 (抜粋は実際にファイルから16kbの境界にあります) –

答えて

3

実行

ffprobe -show_entries frame=pkt_pos,pkt_size -select_streams v -of csv=p=0:nk=1 -v 0 in.mp4 

その出力は、第1列はフレームと2列目のオフセット開始バイトのサイズである

48|33720 
54534|76 
53159|974 
54920|381 
34070|19089 
68405|520 
67315|740 
69279|397 
55627|11356 
84445|534 
83571|536 
85314|979 

あろう。フレームnは#nという行に表示されます。任意のシェルツールなどを使用して、検出されたオフセット値がpositionposition+sizeの間にある行を調べることができます。位置系列は単調ではないので、最初の列をチェックするだけでは信頼性がありません。

+0

これは完璧に見えます... Debian-8のSynapticは 'ffprobe'について知らないので、私はffmpeg-3.3.2をソースからビルドしています。私はこの答えを数分で受け入れることを期待しています。どうもありがとう! –

+0

正確に広告されたように動作します...ありがとう! –

関連する問題