1

h.264 でエンコードされたビデオ ストリームがあり、mp4 ファイルを作成したい。

/* mp4 の出力形式を見つける */

m_pOutputFormat= av_guess_format("mp4", NULL, NULL);

if (!m_pOutputFormat) は FALSE を返します。// 適切な出力形式 (mp4) が見つかりませんでした。

このコードでは、h264ではなくビデオコーデックのmpegを取得します。これは、libx264なしでffmpegをビルドしたためだと思います。(そして、ライセンスのためにlibx264でffmpegを構築したくありません)

m_pOutputFormat->video_codec= CODEC_ID_H264;

video_codec を CODEC_ID_H264 に変更すると、一部のプレーヤー (kmplayer) で正常に動作します。ただし、iPod、QuickTime では動作しません。

codec_tag の値を変更できなかったため、このコードは間違っている可能性があります (この変数には const プロパティがあります)。


1. libav+libx264 を再コンパイルせずに av_guess_format("mp4",NULL,NULL) の他の結果を取得するにはどうすればよいですか?

2. mp4 ファイルを適切に作成するにはどうすればよいですか?

4

1 に答える 1

0

libx264 はエンコーダーであるため、h264 ストリームで適切に動作するために libx264 は必要ないと思います。また、libx264 なしでコンパイルされた libav を使用して h264 パケットを処理しました。ファイルからパケットを読み取り、別のファイルに書き込む場合は問題なく動作します。

av_guess_format の呼び出しに関しては、h264 に適切な MIME タイプ (たとえば video/h264 またはその他) を指定するか、関数に別の短いタイプ名を指定することができます。これは正しいはずです: av_guess_format("h264",NULL, NULL)。

コード例 (objective-C) については、こちらを参照してください: http://libav-users.943685.n4.nabble.com/Libavcodec-encoding-with-libx264-td3250373.html

于 2011-09-06T09:22:43.113 に答える