Преобразование серии изображений в видео на Java?

В настоящее время в функционирующем прототипе есть все необходимое для работы: полупрозрачное окно для легкого изменения размера места, которое вы хотите записать, несколько потоков для управления созданием снимков экрана и т. д., но последняя задача, которую мне нужно выполнить, ускользнула. меня месяцами. Мне нужно преобразовать все изображения, которые я сбрасывал в папку, которую я создал под названием temp (которую я удаляю после того, как все будет сделано), в фильм.

Я уже нашел это, но это отдельная вещь, которую вы используете в оболочке. Мне нужно просто настроить его так, чтобы он просто преобразовывал все изображения (screencapture1.jpg, screencapture2.jpg и т. д.) в один фильм.

Почему я не могу сделать это сам? Потому что я плохо понимаю работу других людей с точки зрения языка программирования. Я не знаю почему, но если это не самое простое, я никогда не смогу этого понять.


person Community    schedule 21.05.2010    source источник


Ответы (2)


Я бы посоветовал просто научиться вызывать внешние программы из вашей Java-программы. Затем вы можете просто запустить этот пример программы, с которой вы связались. Или, если вы хотите еще больше возможностей, используйте ffmpeg, который также сделает это автоматически из командной строки:

ffmpeg -i screencapture%d.jpg -vcodec mpeg4 outfile.avi

ffmpeg позволяет настраивать множество параметров вывода видео. Просто ознакомьтесь с документацией для всех вариантов.

Команда Java Runtime.getRuntime().exec(...) позволит вам запустить любую командную строку, которую вы передадите. Есть много примеров того, как это сделать, если вы погуглите.

person Jason B    schedule 21.05.2010
comment
Добавление библиотеки FFmpeg увеличило бы размер моего приложения более чем в 300 раз... =( Кроме того, как мне ее использовать? Я плохо разбираюсь в оболочках, но я точно знаю, что должен сообщить своей оболочке, где находится библиотека FFmpeg. перед вводом ffmpeg -i screencapture%d.jpg -vcodec mpeg4 outfile.avi будет работать. - person ; 22.05.2010
comment
Возможно, вам придется указать полный путь. Если в Windows, это может быть что-то вроде Runtime.getRuntime().exec("C:\\Program Files\\ffmpeg\\ffmpeg.exe -i screencapture%d.jpg -vcodec mpeg4 outfile.avi");, заменяющего путь к вашему исполняемому файлу соответственно. Я знаю, что это значительно увеличит размер вашего приложения, но довольно сложно не делать этого, когда вы думаете о необходимых вам возможностях. Вам нужен декодер JPEG и видеокодер MPEG, оба из которых довольно сложны. Кроме того, вы, вероятно, хотите, чтобы это было довольно быстро. Независимо от того, какое решение вы используете, оно займет место. - person Jason B; 22.05.2010
comment
Хорошо. Можно ли удалить ненужные части библиотеки FFmpeg, чтобы уменьшить ее? - person ; 22.05.2010
comment
Кроме того, я не вижу ffmpeg.exe. Я вижу только файлы C. Я также на Mac, поэтому я не думаю, что исполняемый файл Windows будет работать. - person ; 22.05.2010
comment
Да, сайт ffmpeg на самом деле не предлагает никаких скомпилированных двоичных файлов. Версии для Windows и Linux легко найти, но я никогда не искал версии для Mac OS. Вы можете создать свой собственный, что не должно быть слишком сложно (хотя я никогда не делал этого для Mac). См.: stephenjungels.com/jungels.net/articles/ffmpeg-howto.html< /а>. Возможно, более простым вариантом является использование бинарного файла ffmpeg, входящего в состав ffmpegX: ffmpegx.com. Я точно не знаю, куда его установит ffmpegX, но вы сможете выполнить поиск и найти его. - person Jason B; 22.05.2010
comment
Кроме того, если вы создаете свой собственный исполняемый файл ffmpeg из исходного кода, вы можете несколько уменьшить размер двоичного файла, отключив некоторые вещи. Это делается при запуске скрипта configure. - person Jason B; 22.05.2010

Я предлагаю использовать для этого Xuggler. Введение.

person BalusC    schedule 21.05.2010
comment
Есть ли учебник для того, что я ищу? Спасибо. - person ; 21.05.2010