1

ffmpegでファイルからムービーアトムを取得するには? たとえば、avcCatom バイトが必要です。解決策があれば、自分でパーサーをコーディングしたくありません。

http://www.ffmpeg.org/doxygen/0.6/mov_8c-source.htmlはいくつかの API を提供しているようですが、私は ffmpeg に詳しくありません。

または、SPS および PPS NAL を取得するための直接 API はありますか?

4

1 に答える 1

1

FFmpeg がこれらの詳細を取得するための直接 API を提供しているかどうかはわかりません。avcCただし、 QuickTime/MP4 ファイルからアトムを取得できるようにする、信じられないほど怠惰なソリューションを次に示します。

  1. ファイルを開き、moovトップレベルのアトム構造でアトムを見つけます ( mdatftyp、およびおそらく他のいくつかのアトムの間をトラバースします)。
  2. アトム全体moovをメモリにロードします (簡単に収まります)。
  3. 「avcC」の文字列検索を実行します。

これは最もクリーンなアプローチではありませんが、おそらくうまくいくでしょう。さらに正気を保つために (文字列 'avcC' がメタデータ アトムのようにアトム内の別の場所にある場合に備えて)、'avcC' 文字列の前の 4 バイトをチェックし、それらをビッグ エンディアンの 32 ビット数として扱います。avcCアトムの長さを確認し、それらが意味をなすことを確認してください。いくつかの H.264 .MP4 ファイルを確認したところ、経験的に、長さは約 43 ~ 45 バイトです。少なくとも、原子の長さが 8 (最小原子サイズ) よりも大きく、原子の端にぶつからないようにしてmoovください。

于 2013-10-06T04:30:37.573 に答える