2017-01-12 10 views
0

MP4ファイルからオーディオを逆多重化し、デマルチプレクスされたAVPacketデータをファイルに書き込むCプログラムを作成しようとしています。しかし、結果として生じるダンプにはADTSヘッダーがありません。 ADTSヘッダーを追加する最良の方法は何ですか?ffmpeg:AACオーディオパケットをADTS形式に変換する方法

私はffmpegのはADTSミュクサーを実装するように思われる 'adtsenc.c' ファイルがあることを参照してください。

AVOutputFormat ff_adts_muxer = { 
    .name    = "adts", 
    .long_name   = NULL_IF_CONFIG_SMALL("ADTS AAC (Advanced Audio Coding)"), 
    .mime_type   = "audio/aac", 
    .extensions  = "aac,adts", 
    .priv_data_size = sizeof(ADTSContext), 
    .audio_codec  = AV_CODEC_ID_AAC, 
    .video_codec  = AV_CODEC_ID_NONE, 
    .write_header  = adts_write_header, 
    .write_packet  = adts_write_packet, 
    .write_trailer  = adts_write_trailer, 
    .priv_class  = &adts_muxer_class, 
    .flags    = AVFMT_NOTIMESTAMPS, 
}; 

ベスト願いを。

+0

mp4ファイルには通常、ADTSヘッダーが含まれていません。[冗長](https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Container_formats)です。しかし、データを '裸の' aacファイルとして保存すると、FFmpegはADTSヘッダーを追加します。 – AkselA

+0

コメントありがとうございました。私はあなたが私を正しい方向に向けると思います。 「裸の」aacファイルとしてデータを保存するために何をする必要があるか、私に何か考えてもらえますか?私は本当にこれに助けていただきありがとうございます。 – Malik

答えて

0

アップデート:私はあなたがしようとすると、コマンドラインするDemuxはADTSヘッダを入れて達成していることを知っている:

ffmpeg -i input.mp4 -acodec copy -vn output.aac 

私はこのプロセスが呼び出すことによってこれを達成するためにadts.cすなわちADTSミュクサーを使用していることを確認:

adts_write_header() 
adts_write_packet() 
adts_write_packet() 
..... 
adts_write_trailer() 

自分のプログラムでどのように使用するかを理解する必要があります。もし私がそれを理解したら、私は更新を掲示するでしょう。

+0

私はadtsenc.cからコードを抽出し、私の状況に合わせて修正しました。誰かがコードを必要とするなら、私に知らせてください。 – Malik

関連する問題