FFMPEG разумные значения по умолчанию - PullRequest
4 голосов
/ 29 января 2012

Я использую ffmpeg для добавления водяных знаков к видео в формате PNG с использованием vfilters, например:

ffmpeg -i 26.wmv -vcodec libx264 -acodec copy -vf "movie=logo.png [watermark]; [in][watermark] overlay=10:10 [out]" 26_w.mkv

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

Ответы [ 2 ]

16 голосов
/ 30 января 2012

Обычно желаемое, чтобы результат был «того же качества», что и входные данные, - это предполагаемая вещь, которую люди всегда будут хотеть.К сожалению, это невозможно при использовании кодера с потерями, и даже кодеры без потерь могут не обеспечивать такое же качество из-за преобразования цветового пространства, подвыборки цветности и других проблем.Тем не менее, вы можете получить визуально без потерь (или почти) выходных данных при использовании энкодера с потерями;Это означает, что это может выглядеть так, как если бы результат был одинаковым для ваших глаз, но технически это не так.Кроме того, попытка использовать тот же битрейт и другие параметры, что и на входе, скорее всего, не достигнет того, что вы хотите.

Пример:

ffmpeg -i input -codec:v libx264 -preset medium -crf 24 -codec:a copy output.mkv

Два варианта для настройки: -crf и -preset.CRF (коэффициент постоянной скорости) - ваш уровень качества.Чем ниже значение, тем выше качество.Предварительная установка представляет собой набор параметров, которые дадут конкретную скорость кодирования против компромисса сжатия.Более медленная предустановка будет кодировать медленнее, но обеспечит более высокое сжатие (сжатие - это качество на размер файла).Основное использование:

  1. Используйте самое высокое значение crf, которое по-прежнему дает желаемое качество.
  2. Используйте самый медленный пресет, к которому у вас есть терпение (см. x264 --help для пресетаперечислите и игнорируйте предустановку placebo , так как это шутка).
  3. Используйте эти настройки для остальных видео.

Другие примечания:

  • Вам не нужно кодировать все видео втест качества.Вы можете использовать опции -ss и -t, чтобы выбрать случайную секцию для кодирования, например -ss 30 -t 60, которая пропустит первые 30 секунд и создаст 60-секундный выход.

  • В этом примере аудио поток копируется вместо перекодирования.

  • Помните, что каждый кодировщик отличается, и то, что работает для x264, не будетприменяются к другим кодировщикам.

  • Добавить -pix_fmt yuv420p, если вывод не воспроизводится в немых плеерах, таких как QuickTime.

Также см .:

0 голосов
/ 29 января 2012

Вот набор очень хороших примеров http://ffmpeg.org/ffmpeg.html#Examples

Вот скрипт, который я сделал для преобразования файлов в FLV-видео, а также добавления изображения для предварительного просмотра

<?php 
$filename = "./upload/".$_GET['name'].".".substr(strrchr($_FILES['Filedata']['name'], '.'), 1);
move_uploaded_file($_FILES['Filedata']['tmp_name'], $filename);
chmod($filename, 0777);
exec ("ffmpeg -i ".$filename." -ar 22050 -b 200 -r 12 -f flv -s 500x374 upload/".$_GET['name'].".flv");
exec ("ffmpeg -i ".$filename." -an -ss 00:00:03 -an -r 1 -s 300x200 -vframes 1 -y -pix_fmt rgb24 upload/".$_GET['name']."%d.jpg");
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...