23

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

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

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

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

так же как

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

2 ответа2

45

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?

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

Эти пресеты влияют на скорость кодирования. Использование более медленных пресетов обеспечивает лучшее сжатие или качество для каждого размера файла, в то время как более быстрые пресеты дают худшее сжатие. В общем, вы должны просто использовать пресет, который вы можете позволить себе ждать. Предустановки могут быть 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 предлагает использовать имена профилей, однако это не работает в FFmpeg 1.0.

12

Я провел тест, в котором я транскодировал (используя кодирование 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .