2010-03-04 5 views
6

Я работаю над ffmpeg и пытаюсь добавить аудиопоток на лету. Я использую AudioQueues, и я получаю исходный звуковой буфер. Я кодирую аудио с линейным PCM, и, следовательно, звук, который я получаю, будет иметь необработанный формат, который, как я знаю, ffmpeg действительно принимает его. Но я не могу понять, как это сделать. Я просмотрел AVStream, где мы должны создать новый поток для этого аудиоканала, но как его кодировать на видео, которое уже инициализировано в другой структуре AVStream.Добавление аудиоканала с помощью ffmpeg

В целом, я хотел бы иметь представление об архитектуре ffmpeg. Мне было трудно работать, так как это наименее документировано. Любые указатели или детали оцениваются.

Спасибо и наилучшие пожелания, Радж Паван G

+0

Привет, у вас есть образец, связанный с OSX, m пытается работать на том же – Swati

+0

У меня нет доступа к исходному коду, к сожалению! –

ответ

2

Если вы хотите использовать Java, вы найдете гораздо лучше документированы API обертку для FFmpeg с Xuggler.

Это означает, что FFmpeg может поддерживать Raw PCM, т. Е. Все контейнеры могут его содержать. используйте кодеки PCM (см. avcodec.h) и найдите тот, который имеет нужный размер и атрибуты. Чтобы добавить аудио в тот же контейнер, найдите объект AVFormatContext, который вы используете для существующего видеопотока, и используйте команду av_new_stream (...) для добавления нового потока. Затем присоедините свой кодер ИКМ и «закодируйте» к нему и напишите полученные пакеты. См. Output_example.c в FFmpeg для примеров этого API в действии.

+1

Я благодарю, я уже начал следовать в этом направлении. Я в основном следую за output_example.c и вернусь к вам, если меня ударят где угодно. Я использую Cocoa, но не java. Но так или иначе, язык реализации является абстракцией для вызовов FFMpeg! –