Как лучше всего перекодировать аудио и видео для показа в Интернете?
Мне нужно сделать это программно. Я хотел бы сделать что-то вроде YouTube или Google Video, где пользователи могут загружать любой формат, который они хотят, и я кодирую его в flv, mp3 и / или mp4. Я мог бы сделать это на нашем сервере, но я бы предпочел использовать экземпляр EC2 или даже веб-службу. У нас есть сервер Windows 2008.





ffmpeg может это сделать, это инструмент командной строки, который использует libavcodec. Может обрабатывать преобразование большинства видеоформатов. Его лицензия - LPGL, если вам это подходит. Вы можете программно использовать его как отдельный процесс, или, если вы чувствуете себя хардкорным, вы можете использовать библиотеку libavcodec самостоятельно для непосредственного кодирования.
Имейте в виду, что некоторые части ffmpeg находятся под лицензией GPL. Я считаю, что это модуль libpostproc, и, если я правильно помню, он используется при перекодировании. Убедитесь, что эта лицензия совместима с тем, что вы делаете.
@mouviciel, вы правы: большая часть FFMPEG находится под LGPL, но есть некоторые компоненты под GPL. Вопрос относится к одной из тех областей, в которых, как я полагаю, потребуется GPL.
GPL вполне приемлема, если она работает на вашем собственном сервере. Проблематичными могут быть только материалы Affero GPL.
Если вы хотите перекодировать в Flv (который, вероятно, лучше всего подходит для Интернета), я использую эту строку:
ffmpeg -hq -y -i $directory/$file -r 20 -s 300x200 -deinterlace -ar 22050 $directory/$file.flv 1>/dev/null 2>/dev/null
Работает очень хорошо, конечно, под linux :-).
Я бы взглянул на справочный SDK Main Concept:
Он создан для перекодирования и, поскольку это лицензированный SDK, не имеет никаких юридических проблем, связанных с ffmpeg / libavcodec.
отчасти зависит от того, сколько вы хотите потратить. если это совершенно новая (и в основном не финансируемая) идея, тогда идите по маршруту ffmpeg, но по мере того, как вы масштабируете и стремитесь повысить качество, рассмотрите один из более профессиональных инструментов кодирования, которые можно автоматизировать (Rhozet, Inlet, Digital Rapids 3 варианта).
Если вы ищете вещи под GPL:
Для отключения звука попробуйте sox. Очень мощный! Многое делает! Он включен в большинство дистрибутивов Linux.
Также существует знаменитый ХРОМОЙ для кодирования mp3 [аудио].
Для видео Mencoder впечатляет! Это часть пакета mplayer. Он будет обрабатывать преобразования из большинства видеоформатов. Гораздо больше, чем я когда-либо мог мечтать. (Для документации см. Глава 9. Основы использования MEncoder и Глава 10. Кодирование с помощью MEncoder.)
Он несколько более ограничен в том, что он может создать. Но он поддерживает mpeg4, mpeg2, DVD-MPEG, flv и многие другие. (Хотя я сам не пробовал flv, Google показывает, что другие люди его используют.)
Я делал такие вещи, как jpeg + звук -> фильм mpeg4:
nice +20 $MENCODER mf://${JPEGFILE} -mf w=720:h=480:fps=1/${SOUNDLENGTH}:type=jpeg -audiofile ${SOUNDFILE} -ovc lavc -oac lavc -lavcopts vcodec=mpeg4 -ofps 30000/1001 -o ${MENU_MPG}
Или перекодируйте произвольно отформатированное видео в DVD-совместимый mpeg:
nice +20 $MENCODER -edl ${EDL} -ovc lavc -oac lavc -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=${VBITRATE}:keyint=18:acodec=ac3:abitrate=192:aspect=4/3:trell:mbd=2:dia=4:cmp=3:precmp=3:ildctcmp=3:subcmp=3:mbcmp=3:cbp:mv0:dc=10 -of mpeg -mpegopts format=dvd -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 -ofps 30000/1001 -o ./${INFILE}.reformatted ${FILEPATH}
-edl / -edlout [Редактировать списки решений] используются для вырезания только тех частей видео, которые мне нужны.
$ {VBITRATE} обычно составляет 5000 для DVD-mpeg-video. Но если вы немного ошибетесь, вы сможете записать больше видео на DVD. Предполагая, что вы можете терпеть артефакты.
scale = 720: 480, harddup - Небольшая проблема с неправильным масштабом для моего dvdplayer и harddup для решения проблемы рассинхронизации звука и видео на моем проигрывателе "эль дешево".
(Для воспроизведения на широкоэкранном плеере, который не поддерживает видео 4x3, я использовал такие зверства, как "аспект = 16/9", "-vf scale = 560: 480, expand = 720: 480, harddup". Но в целом вы не хотите тратить биты на кодирование черных полос.)
Это далеко не самый эффективный набор опций для Mencoder! Запуск может занять много времени. Но у меня были другие цели ...
Углеродный кодер Rhozet может обрабатывать широкий выбор форматов, плюс вы можете использовать плагины для изменения видео (например, добавить водяной знак)
Я настоятельно рекомендую ffmpeg. В Windows я нашел этот сайт для размещения хороших двоичных файлов.
На самом деле части ffmpeg под GPL являются необязательными и включаются только в том случае, если вы запускаете ./configure с параметром --enable-gpl.