ffmpeg - Как конвертировать в WebM для публикации в вэбе

Thanks: 92
Say if this page is useful for you
Author: Sergey Popov (aka azure)
Published on 2011.02.10

Прежде всего, убедитесь, что ваша сборка ffmpeg поддерживает формат WebM:

$ ffmpeg -formats

Тут вы должны увидеть что-то вроде

 D  wc3movie        Wing Commander III movie format
  E webm            WebM file format
 D  wsaud           Westwood Studios audio format
Если такого формата нет, или вы получили какую-то другую ошибку — скорее всего вам надо обновить ffmpeg.

Итак, конвертировать видео в формат WebM очень просто:

$ ffmpeg -i infile.avi -f webm output.webm

Для того, чтоб регулировать битрейт необходимо указать параметр -b. Мне пришлось еще устанавливать вручную значения квантизатора для того, чтоб кодировщик мог приблизиться к заданному битрейту:

$ ffmpeg -i infile.avi -f webm -b 500k -qmin 2 -qmax 51 output.webm

Значение параметра -qmax 51 является максимальным для формата WebM и приводит к достижению наименьших битрейтов.

Итак, теперь идет готовое решение для кодировки видео для публикации на сайте:

ffmpeg -i infile.avi -f webm -b 500k -qmin 2 -qmax 51 -pass 1 -y /dev/null
ffmpeg -i infile.avi -f webm -b 500k -qmin 2 -qmax 51 -pass 2 output.webm

Все прочие параметры перекодирования (например, изменение размера) — на ваше усмотрение.

$ man ffmpeg
и да пребудет с вами счастье!

Comments:

Ник: -qmax 51 не является максимальным
azure: При попытке установить -qmax 52 мне выдало сообщение об ошибке. Возможно, это зависит от версии ффмпег.
Ник: ffmpeg -i in.avi -qmin 0 -qmax 63 output.webm Всё, как положено, срабатывает без ошибок.. FFmpeg version SVN-r26400
azure: Ну что ж, спасибо за замечание и уточнение!
azure: 91.218.228.14 - спасибо за помощь в улучшении сайта! Вы так замечательно накрутили счетчик благодарностей, что я решил улучшить систему учета благодарностей! Ваши нажатия на кнопочку спасибо решил удалить :)
alex1442: для опции pass вроде необходима опция -passlogfile ??
azure: Нет, не необходима. Она может указать особый файл для лога. Это имеет смысл если вы параллельно кодируете множество файлов из одной директории в два прохода. Тогда, видимо, надо, чтоб имена лог-файлов были уникальны. из man ffmpeg: -passlogfile prefix Set two-pass log file name prefix to prefix, the default file name prefix is ''ffmpeg2pass''. The complete file name will be PREFIX-N .log, where N is a number specific to the output stream.

Nickname:
Creative Commons License This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License