Я работаю над ffmpeg и пытаюсь добавить аудиопоток на лету. Я использую AudioQueues, и я получаю необработанный аудио буфер. Я кодирую аудио линейным PCM и следовательно аудио, которое я получаю, будет иметь формат .raw, который я знаю, что ffmpeg действительно принимает его. Но я не могу выяснить как. Я изучил AVStream, где в мы должны создать новый поток для этого звукового канала, но как я кодирую его к видео, которое уже инициализируется в другой структуре AVStream.
В целом, я хотел бы иметь идею архитектуры ffmpeg. Я нашел трудным работать, так как это меньше всего документируется. Любые указатели или детали ценятся.
Спасибо и наилучшие пожелания, Raj Pawan G.
Если вы хотите использовать java, вы найдете гораздо лучше документированную обертку API для FFmpeg в Xuggler.
Тем не менее, FFmpeg может поддерживать Raw PCM, но не все контейнеры могут его содержать. Используйте кодеки PCM (см. avcodec.h) и найдите тот, который имеет нужный вам размер и атрибуты. Чтобы добавить аудио в тот же контейнер, найдите объект AVFormatContext, который вы используете для существующего видеопотока, и используйте av_new_stream(...) для добавления нового потока. Затем подключите PCM-кодер и "закодируйте" его и запишите результирующие пакеты. Примеры этого API в действии смотрите в файле output_example.c в FFmpeg.