我正在尝试写一个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,
};谨致问候。
发布于 2017-01-18 00:41:11
更新:我知道命令行解复用器实现了放置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()我需要弄清楚如何在我的程序中使用它。如果我弄清楚了,我会更新的。
https://stackoverflow.com/questions/41604964
复制相似问题