【发布时间】:2017-01-12 04:07:21
【问题描述】:
我正在尝试编写一个从 MP4 文件中解复用音频并将解复用后的 AVPacket 数据写入文件的 C 程序。但生成的转储缺少 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,
};
最好的祝愿。
【问题讨论】:
-
mp4 文件通常不包含 ADTS 标头,因为它们 would be redundant。但是,如果您将数据保存为“裸”aac 文件,FFmpeg 将添加 ADTS 标头。
-
感谢 AkselA 的评论。我认为您为我指明了正确的方向。你能给我一些想法我需要做什么才能将数据保存为“裸”aac文件吗?我真的很感谢这方面的帮助。