Я пытаюсь написать программу на языке C, которая передает потоки аудио из файла MP4 и записывает данные демкированного AVPacket в файл. Но в результате дампа отсутствуют заголовки ADTS. Любые указатели на то, что является лучшим способом добавления заголовков ADTS.ffmpeg: Как конвертировать аудио-пакеты AAC в формат 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, поскольку они [будут избыточными] (https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Container_formats). Если вы сохраните данные как «голые» aac-файлы, FFmpeg добавит заголовки ADTS. – AkselA
Спасибо AkselA за ваш комментарий. Я думаю, вы указываете меня в правильном направлении. Не могли бы вы дать мне некоторое представление о том, что мне нужно сделать, чтобы сохранить данные как «голый» файл aac? Я действительно ценю помощь в этом. – Malik