Чит-листи та пресети-налаштування, які насправді працюють з 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). Мені дуже цікаво, що "veryfast" щоразу створював майже найменший розмір файлу , втрачаючи лише "veryslow" і ніколи не сильно.

Одна з різниць, які я помітив серед різних заданих значень, полягала в тому, що операційна система (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
Я знаю, що параметри форматування Супер Користувача посередні, але це може бути корисно, якщо ви опублікували дані у вигляді тексту - можливо, використовуючи форматування коду.
Скотт

1
Захоплююче. Це також швидше на моїй машині. Спасибі!
joeytwiddle

1
Я мушу визнати, що я дивився на ваші результати з підозрою, але я повторив тест і отримав проти подібні результати, використовуючи ffmpeg версії 3.3.2-1 на 2-х хвилинному 1080p відеокліпі. Насправді дуже швидко генерується найменший розмір файлу 60% часу, і він займає 2-е місце, щоб знизити 40% часу (але не набагато). Відтепер я буду використовувати дуже швидко для всіх своїх кодувань разом із досить низьким значенням CRF (18, 19, 20), оскільки veryfast був лише трохи повільніше з нижчими значеннями CRF, ніж з вищими. Дякую, що ти врятував мені багато часу. Сирі дані та сценарій у коментарі нижче.
матст

1
Продовжуючи коментар вище ... Ось мої необроблені дані - CRFs 18 - 27 та скрипт bash Linux / UNIX, який я написав для запуску коду (на випадок, якщо хтось захоче запустити подібний тест).
маттст

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