Транскодирование аудио и видео

Как лучше всего перекодировать аудио и видео для показа в Интернете?

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

Ответов (8)

Решение

Я настоятельно рекомендую ffmpeg. В Windows я нашел этот сайт для размещения хороших двоичных файлов.

ffmpeg может это сделать, это инструмент командной строки, который использует libavcodec. Может обрабатывать преобразование большинства видеоформатов. Его лицензия - LPGL, если это соответствует вашим потребностям. Вы можете использовать его как отдельный процесс программно, или, если вы чувствуете себя хардкорным, вы можете использовать библиотеку libavcodec самостоятельно для непосредственного кодирования.

Rhozet Carbon Coder может обрабатывать широкий спектр форматов, плюс вы можете использовать плагины для изменения видео (например, добавления водяного знака).

Если вы хотите перекодировать в Flv (который, вероятно, лучше всего подходит для Интернета), я использую эту строку:

ffmpeg -hq -y -i $directory/$file -r 20 -s 300x200 -deinterlace -ar 22050 $directory/$file.flv 1>/dev/null 2>/dev/null

Работает очень хорошо, конечно, под linux :-).

Имейте в виду, что некоторые части ffmpeg находятся под лицензией GPL. Я считаю, что это модуль libpostproc, и, если я правильно помню, он используется при перекодировании. Убедитесь, что эта лицензия совместима с тем, что вы делаете.

Я бы взглянул на справочный SDK Main Concept:

http://www.mainconcept.com/site/developer-products-6/pc-based-sdks-20974/reference-sdk-21221/information-21243.html

Он создан для перекодирования и, поскольку это лицензированный SDK, не имеет никаких юридических проблем, связанных с ffmpeg / libavcodec.

отчасти зависит от того, сколько вы хотите потратить. если это совершенно новая (и в основном не финансируемая) идея, тогда идите по пути ffmpeg, но по мере того, как вы масштабируете и стремитесь повысить качество, рассмотрите один из более профессиональных инструментов кодирования, которые можно автоматизировать (Rhozet, Inlet, Digital Rapids 3 варианта).

Если вы ищете вещи под GPL:

Для прослушивания звука попробуйте sox. Очень могущественный! Многое делает! Он включен в большинство дистрибутивов Linux.

Также существует знаменитый LAME для кодирования 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 для решения проблемы рассинхронизации звука и видео на моем проигрывателе el cheapo .

(Для воспроизведения на широкоэкранном плеере, который не поддерживает видео 4x3, я использовал такие зверства, как «aspect = 16/9» , «-vf scale = 560: 480, expand = 720: 480, harddup . Но в целом вы не хотите тратить биты на кодирование черных полос.)

Это далеко не самый эффективный набор опций для mencoder ! Запуск может занять много времени. Но у меня были другие цели ...