Мне нужно иметь возможность программно перекодировать файлы mpeg-2 в .mp4,.mp3,.wmv,.rm(необязательно) и .flv(необязательно) и, надеюсь, создать эскиз. Я нашел Java Media Framework, но он откровенно выглядит довольно дерьмовым. Это будет запуск Linux-сервера, поэтому я могу выполнить команду ffmpeg с помощью Commons Exec - делает ли ffmpeg все, что мне нужно? FFmpeg кажется довольно сложным, поэтому у меня возникают проблемы с поиском этой информации, но это определенно похоже на то, что все-в-одном. Любые предложения?
Программно транскодировать видео в формате MPEG-2
Ответ 1
Ffmpeg - лучший и простой. Для вывода/преобразования видео:
ffmpeg -i {input}.ext -r {target_frame_rate} -ar {target_audio_rate} -b {target_bitrate} -s {width}x{height} {target}.ext
И ваш скриншот:
ffmpeg -i {input}.ext -r 1 -ss 00:00:04:005 -t 00:00:01 -an -s {width}x{height} {target_name}%d.jpg
15 fps является стандартным для flv, а частота дискретизации аудио должна быть 44100 для flv. Опции для использования: -r
задает частоту кадров в 1 к/с (один кадр, используемый в качестве снимка экрана), -ss
ищет нужную позицию hh:mm:ss:fff
, -t
- это продолжительность (одна секунда, соответствующая вашему одному fps), -an
сообщает ffmpeg игнорировать аудио, а -s
- размер скриншота. Требуется %d
, так как это будет цифра, умноженная на количество скриншотов, которые вы используете. С приведенным выше значением %d
всегда будет число 1 (один кадр, один снимок экрана). Удачи.
Ответ 2
Интересный веб-сервис из encoding.com будет транскодировать файлы для вас.
Ответ 3
Вы также можете использовать Xuggler непосредственно с Java, что обеспечивает гораздо лучшую поддержку кодеков и кодировок, чем JMF.
Ответ 4
Популярными приложениями для перекодирования для Linux являются ffmpeg, transcode и mencoder. Оба транскода и mencoder используют ffmpeg, и все три могут обрабатывать требуемые задачи, включая перекодировку FLV и миниатюру видео. ffmpeg, вероятно, самый популярный из трех, поэтому вы можете найти лучшую онлайн-поддержку. Также стоит упомянуть, что ffmpeg поддерживает многопоточное перекодирование.
Я бы рекомендовал использовать ffmpeg.