2017-01-12 37 views
0

Я пытаюсь написать программу на языке 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, 
}; 

С наилучшими пожеланиями.

+0

Файлы mp4 обычно не содержат заголовки ADTS, поскольку они [будут избыточными] (https://en.wikipedia.org/wiki/Advanced_Audio_Coding#Container_formats). Если вы сохраните данные как «голые» aac-файлы, FFmpeg добавит заголовки ADTS. – AkselA

+0

Спасибо AkselA за ваш комментарий. Я думаю, вы указываете меня в правильном направлении. Не могли бы вы дать мне некоторое представление о том, что мне нужно сделать, чтобы сохранить данные как «голый» файл aac? Я действительно ценю помощь в этом. – Malik

ответ

0

Обновления: Я знаю, что командная строка демультиплексирование достигает ввод 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() 

Мне нужно выяснить, как использовать его в моей программе. Я опубликую обновление, если я это выясню.

+0

В итоге я извлек код из adtsenc.c и изменил его в соответствии с моей ситуацией. Если кому-то нужен код, пожалуйста, дайте мне знать. – Malik

 Смежные вопросы

  • Нет связанных вопросов^_^