ffmpeg:如何将AAC音频数据包转换为ADTS格式

时间:2017-01-12 04:07:21

标签: audio ffmpeg aac mux adts

我正在尝试编写一个C程序,该程序将MP4文件中的音频解复用,并将解复用的AVPacket数据写入文件。但是生成的转储缺少ADTS标头。有关添加ADTS标头的最佳方法的任何指示。

我看到ffmpeg有' adtsenc.c'似乎实现ADTS复用器的文件:

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,
};

祝福。

1 个答案:

答案 0 :(得分:0)

更新:我知道命令行解复用程序会在您尝试时实现放置ADTS标头:

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

我检查过这个过程是使用adts.c,即ADTS muxer通过调用:

来实现这个目的
adts_write_header()
adts_write_packet()
adts_write_packet()
.....
adts_write_trailer()

我需要弄清楚如何在我的程序中使用它。如果我搞清楚的话,我会发布更新。