Шпаргалки и пресеты-настройки, которые на самом деле работают с FFmpeg 1.0?


28

Попробовал несколько «шпаргалок», доступных в других местах, но они почти все устарели и просто НЕ будут работать с последней версией FFMpeg.

Может кто-нибудь указать мне настройки, которые будут работать с последней FFMpeg?

Меня в первую очередь интересуют следующие кодеки

H.264, пресеты среднего и низкого качества

так же как

ProRes, пресеты низкого среднего и высокого качества

Ответы:


49

FFmpeg больше не включает пресеты и профили на основе текстового файла для libx264, то есть то, что вы использовали с -vpreопцией. Они были изношено и удалены в пользу доступа фактические x264 пресеты, профили (и мелодии) с -preset, -profile:vи -tuneварианты. Старые текстовые файлы эмулировали только официальные пресеты и профили x264, и из-за нескольких ограничений не могли предложить полную функциональность, которую обеспечивает новая система. Это также намного легче поддерживать.

Кроме того, многие кодеры имеют свои собственные отдельные параметры; также называется "частные варианты". Вам нужно будет посмотреть опции кодирования аудио и видео для распространенных кодеков в онлайн-документации FFmpeg или проверить вывод ffmpeg -h fullполного списка поддерживаемых опций. Например, x264 перечисляет свои параметры libx264 AVOptionsв выводе полной справки.

Если ваш ffmpeg поддерживает, -presetто никакие пресеты текстовых файлов не должны использоваться, и FFmpeg больше не поставляется с какими-либо другими, кроме некоторых нестандартных пресетов iPod. Это распространенное заблуждение, что текстовые пресеты можно просто скопировать из любого места и использовать с любым ffmpeg. Это не соответствует действительности и приведет к поломке.


В основном, пресеты позволяли вам делать следующие вещи:

Контроль качества

Качество контролируется либо путем указания скорости передачи -b:v(для видео) или -b:a(для аудио), либо путем указания любого другого метода кодирования, который может поддерживать кодек.

Для x264 существуют различные методы кодирования, при этом метод коэффициента постоянной скорости является наиболее сложным. Это приводит к переменному битрейту, но в целом хорошее качество за один проход. Значения CRF варьируются от 0 до 51, но нормальные значения находятся где-то между 19 и 26, в зависимости от вашего источника и того, какое качество вы хотите. 23 по умолчанию, так что вы можете, например, выбрать 18 для «высокого качества» и 28 для «низкого качества», что бы это ни значило для вас.

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

У x264 есть и другие методы кодирования , но это выходит за рамки этого.

Ограничить профиль H.264

Эти профили определяют набор функций, которые кодер может использовать для соответствия возможностям определенного декодера. В недавнем FFmpeg используйте следующий синтаксис, чтобы указать профиль, где профиль может быть baseline, mainили high:

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

Дополнительную информацию и информацию о том, когда вам следует использовать какой профиль, смотрите: В чем различия между профилями H.264?

Выберите кодировку x264 preset

Эти пресеты влияют на скорость кодирования. Использование более медленных пресетов обеспечивает лучшее сжатие или качество для каждого размера файла, в то время как более быстрые пресеты дают худшее сжатие. В общем, вы должны просто использовать пресет, который вы можете позволить себе ждать. Предварительные настройки могут быть ultrafast, superfast, veryfast, faster, fast, medium( по умолчанию), slowи veryslow. Вот пример:

ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4

Кодировать видео без потерь

Это возможно, указав CRF 0, поэтому просто используйте -crf 0:

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

Наконец, давайте поговорим о ProRes быстро. ProRes принимает либо фиксированный битрейт с -b:v, либо вы можете указать профиль, который должен иметь значение от 0 до 3 , где битрейты выбираются в соответствии с профилем. Выше значит лучше:

ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov

Ffmbc Wiki предполагает , что могут быть использованы имена профилей - это , однако , не удается в FFmpeg 1.0.


Что я должен сделать, чтобы уменьшить вероятность сбоя конверсии, это происходит случайным образом, иногда это не происходит
FlyingAtom

@FlyingAtom Я еще не слышал о "Ошибка конверсии". Если у вас есть конкретный вопрос с воспроизводимой проблемой, задайте новый вопрос: superuser.com/questions/ask
slhck

Так что бы вы в итоге получили, если бы все, что вы поставили, было ffmpeg -i input.mp4 -c:v libx264 output.mp4? CRF: 23 и пресет: средний?
Дражен Бьеловук

1
@ Drazen Да, все верно.
Slhck


20

Я провел тест, в котором я транскодировал (используя кодирование libx264 .mp4) видео высокого качества с видеокамеры Sony, используя полный диапазон предустановленных значений (кроме плацебо) для диапазона значений CRF (18, 21, 24 и 27). ). Я хотел знать, что даст мне лучшее сочетание скорости кодирования, качества вывода и размера файла.

Для каждого значения CRF я дал каждой операции транскодирования балл за время кодирования (например, для CRF = 18, предустановленное значение сверхбыстрого времени 5,7 секунд получило балл 1,0, Veryslow-время 162 секунд получило 0, со всеми другие баллы масштабируются между). Я рассчитал выходной размер файла аналогичным образом, конечно же, наименьший файл получил лучший результат. Затем я добавил две оценки для «комбинированной» оценки скорости / размера.

Для каждого из четырех значений CRF «очень быстрая» предустановка была победителем в хендс-апе с почти идеальными показателями 1,94 (для CRF 18 и 21), 1,96 (CRF 24) и 1,97 (CRF 27). Я нахожу очень любопытным, что «очень быстрый» каждый раз генерирует файл с наименьшим размером , теряя только «очень низкий» и никогда не слишком.

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

Вот мои результаты (в виде снимка электронной таблицы Excel):
снимок Excel

Вот таблица Excel в виде csv-текста:

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00

3
Я знаю, что параметры форматирования Super User посредственные, но это может быть полезно, если вы разместили данные в виде текста - возможно, используя форматирование кода.
Скотт

1
Захватывающий. Это также быстрее на моей машине. Благодарность!
Joeytwiddle

1
Я должен признать, что я смотрел на ваши результаты с подозрением, но я повторил тест и получил v. Аналогичные результаты, используя ffmpeg версии 3.3.2-1 на 2-минутном видеоролике 1080p. На самом деле очень быстро генерируется наименьший размер файла в 60% случаев, и он занимает 2-е место, что очень мало в 40% случаев (но ненамного). Отныне я буду использовать очень быстрое для всех моих кодов наряду с довольно низким значением CRF (18, 19, 20), так как очень быстрое было только немного медленнее с более низкими значениями CRF, чем с более высокими. Спасибо, вы сэкономили мне много времени. Необработанные данные и скрипт в комментариях ниже.
Mattst

1
Продолжая комментарий выше ... Вот мои необработанные данные - CRF с 18 по 27 и сценарий bash для Linux / UNIX, который я написал для запуска кодов (на тот случай, если кто-нибудь захочет запустить аналогичный тест).
Mattst

1
Вот несколько отличных постов в блоге на эту тему с тестами, проведенными для x264 и x265 (результаты, как и ожидалось, очень разные для каждого)
forresthopkinsa
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.