Здравствуйте разработчикам коллег,Java - Запись видео и аудио в то же время FFmpeg
Я в настоящее время разрабатывает инструмент, который может оказать видео, выполнив FFmpeg с помощью процесса Java и подкормки видеокадры к нему.
В настоящее время я использую следующую команду FFmpeg: ffmpeg -y -f rawvideo -pix_fmt rgb24 -s %WIDTH%x%HEIGHT% -r %FPS% -i - -an -c:v libx264 -preset ultrafast -pix_fmt yuv420p "%FILENAME%.mp4"
, где заменители заменены на реальные значения.
код я использую для инициализации FFmpeg:
//commandArgs is a list of command line arguments for FFmpeg
List<String> command = new ArrayList<String>();
command.add("ffmpeg");
command.addAll(commandArgs);
process = new ProcessBuilder(command).directory(outputFolder).start();
OutputStream exportLogOut = new FileOutputStream("export.log");
new StreamPipe(process.getInputStream(), exportLogOut).start();
new StreamPipe(process.getErrorStream(), exportLogOut).start();
outputStream = process.getOutputStream();
channel = Channels.newChannel(outputStream);
Тогда, у меня есть следующий метод, чтобы написать ByteBuffer, содержащий видеокадр FFmpeg:
public void consume(ByteBuffer buf) {
try {
channel.write(buf);
ByteBufferPool.release(buf);
} catch(Exception e) {
e.printStackTrace();
}
}
Теперь мой вопрос есть, как я буду продолжать писать синхронные аудиоданные в выходной файл? Я полагаю, что мне нужно использовать несколько труб, и я, конечно, придется изменить свои аргументы командной строки, но мне нужна помощь:
1) what kind of Audio Data do I need to feed FFmpeg with?
2) how do I feed Audio and Video in one go?
3) how do I keep Audio and Video synchronized?
Спасибо заранее за любую помощь!
Привет, CrushedPixel
Это не вариант, поскольку мы не можем распространять нашу работу по лицензии AGPL. – CrushedPixel
Возможно, я ошибаюсь, но лицензия AGPL предназначена для модификаций и распространения скромного видео, а не для программного обеспечения, использующего скромное видео в качестве библиотеки/API. Также существует устаревшая, устаревшая версия программного обеспечения на https://github.com/artclarke/xuggle-xuggler, которая является GPL, если это соответствует вашим требованиям. –
Вы ошибаетесь - нам также необходимо распространять наш инструмент как AGPL/GPL, что невозможно для нашего проекта. Спасибо в любом случае :) – CrushedPixel