Как преобразовать avi и wmv в mp4 для тега видео html?

Я хочу преобразовать avi и wmv в mp4 для Интернета, и я использую следующий код:
ffmpeg -I input.wmv output.mp4 Этого
достаточно?

Ответы (1)

Да, это так. Это даст вам настройки кодирования по умолчанию, которые обычно подходят для использования в Интернете.

Вы можете указать настройки, чтобы настроить размер, скорость и качество, но вам не нужно этого делать, чтобы получить хорошие результаты. Лучшее руководство, которое я знаю, - это вики-страница руководства по кодированию ffmpeg h.264 .

Например, вы можете отрегулировать качество с помощью параметра Коэффициент постоянной скорости (не беспокойтесь слишком сильно о том, что на самом деле означает коэффициент постоянной скорости, на самом деле это просто настройка качества), используя -crf xгде x — целое число между 0 (без потерь, большой размер файла обычно не совместим с веб-доставкой) и 51 (довольно дрянной, маленький размер файла). Значение по умолчанию — 23, что довольно хорошо, 17 считается визуально без потерь, а где-то между 17-28 — разумное значение.

Еще одна настройка — скорость. Если вы используете CRF, настройка скорости не повлияет на качество вывода, она только повлияет на размер файла — более быстрое сжатие в основном означает, что программное обеспечение будет тратить меньше времени на оптимизацию, поэтому файл будет больше. Скорость регулируется с помощью параметра
-preset presetname, где presetnameодин из (в порядке убывания скорости/увеличения размера файла): ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, и placebo.

Устройства воспроизведения, на которых, как вы ожидаете, будет воспроизводиться видео, — это еще одна вещь, которую вы, возможно, захотите рассмотреть. Установка параметра -profile:vи -level( :vбит означает, что вы устанавливаете профиль только для видеопотока) означает, что вы можете выбирать между более эффективным сжатием с более высоким профилем/уровнем и большей совместимостью со старыми или менее мощными устройствами с более низким профилем/уровнем. . -profile mainвероятно, мудро, если вы ожидаете широкую аудиторию в Интернете, она совместима со всеми iPad, Apple TV2 и iPhone4 и их нефруктовыми аналогами. Если ваша целевая аудитория, вероятно, будет использовать iPod touch gen 2, возможно, вы захотите использовать его, -profile:v baselineи если вы хотите быть уверены, что его можно будет воспроизводить на как можно большем количестве устройств, вы также можете указать уровень,-profile:v baseline -level 3.0

Как указал @LordNeckbeard, если вы кодируете для использования в Интернете, где видео будет встроено в <video>тег HTML5, добавление этой опции -movflags +faststartпозволит начать воспроизведение видео по мере его загрузки.

Собрав все вместе, это пример того, как вы связываете параметры в ffmpeg. Это очень простой пример, ffmpeg чрезвычайно мощен, и ваши команды могут быть настолько сложными, насколько вы хотите. Этот пример даст вам высокое качество, будет воспроизводиться на старых/менее мощных машинах и выберет меньший размер файла, а не скорость кодирования. Это не рекомендуемая настройка, просто пример того, как вы указываете параметры кодирования:

ffmpeg -i thefile.wmv -profile:v main -crf 20 -preset slow output.mp4
я бы не использовал veryslow. Это увеличивает количество ссылок до 16. Неприятно на маломощных устройствах. Также может добавить некоторую задержку при запуске. Придерживайтесь slowили добавляйте-x264-params refs=4
@stib Для просмотра с помощью прогрессивной загрузки, например, размещения MP4 на сервере и представления его с <video>элементом HTML5, -movflags +faststartнастоятельно рекомендуется добавить. В противном случае видео необходимо будет полностью загрузить, прежде чем можно будет начать воспроизведение.
Спасибо. Я внесу некоторые правки. Я должен отметить, что пример не обязательно является рекомендуемой настройкой, это просто пример того, как вы связываете параметры вместе в ffmpeg.