ffmpeg: Как преобразовать аудиопакеты AAC в формат 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 ответ
Обновление: я знаю, что демультиплексирование командной строки позволяет помещать заголовки 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()
Мне нужно выяснить, как использовать его в моей программе. Я опубликую обновление, когда я это выясню.