Але мені цікаво, чи є спосіб визначити "добрий" цільовий бітрейт ...
Хорошою цільовою швидкістю передачі є швидкість передачі:
- підтримується мережею, з якої ви передаєте матеріал (наприклад, мережа 3G, домашній WiFi тощо), що досить легко обчислити
- виглядає добре для вас , що є вельми суб'єктивною мірою
22 Мбіт / с або 45 Мбіт / с дійсно є досить високими для середнього користувача, і особливо для вже стисненого відео, наприклад, h.264. Ви, безумовно, можете йти вперед і знизити швидкість передачі бітів до "розумного" значення, завжди щодо того, яку ємність ви можете собі дозволити і яку якість ви хочете втратити.
Ви також можете змінити розмір відео 1080p до 720p, якщо вам насправді не потрібен розмір або немає можливості обробки для його редагування.
… Або якщо є якийсь сенс намагатися зробити бітрейт змінної
Суть постійної швидкості передачі бітів полягає в адаптації до сценарію потокового носія, де існує вузьке місце, яке обмежує максимальну швидкість передачі бітів переданого відео. У сучасному мультимедійному світі це вже не обов'язково має сенс.
Коли ви стискаєте відео в постійну кількість біт на секунду, ви в основному говорите кодеру завжди використовувати однакову кількість бітів для кодування одного і того ж часового кадру. Це найкращий підхід? Як ви, напевно, здогадалися, це не так. Цитуючи посібник CRF від Handbrake (до цього я повернусь пізніше):
Око сприймає детальніше нерухомих предметів, ніж коли вони перебувають у русі. Через це відеокомпресор може застосовувати більше стиснення (падати більше деталей), коли речі рухаються, і застосовувати менше стиснення (зберігати більше деталей), коли речі нерухомі. Суб'єктивно відео, схоже, має більш високу якість.
Отже, має сенс використовувати змінну швидкість передачі бітів, коли можна. Це дозволить відео виглядати краще, навіть при тому самому розмірі файлу відео з постійною швидкістю передачі.
Тим більше, що більшість кодерів - найвідоміший з них x264 - часто спрацьовують дуже погано, коли ви кажете їм використовувати постійну швидкість передачі бітів. Краще дати їм трохи більше "свободи" в сенсі, скільки біт вони хочуть витратити на кадр. Зрештою, це робота кодера, а не ви. І це називається "постійна якість".
Досить цього - що це означає на практиці? Якщо ви використовуєте FFmpeg для кодування відео, ви вже використовуєте досить хороший інструмент. Якщо у вас також встановлено x264 та використовуєте останню версію обох, ви використовуєте один з найкращих кодерів, який наразі доступний безкоштовно. Замість кодування з фіксованою швидкістю передачі бітів, нехай x264 обирає, скільки хоче витратити. Зробіть це, скориставшись опцією коефіцієнт постійної швидкості .
У дуже простому випадку це означає встановити значення між 17 і 23. Я вибираю MP4 як вихідний контейнер замість MOV, тому що є кращі інструменти для ремультиплексування:
ffmpeg -i input.mov -c:v libx264 -crf 22 output.mp4
Чим менше значення, тим краща якість і більший вихід. Навпаки, чим вище, тим нижче якість. У той же час ви, звичайно, зменшите необхідну середню швидкість передачі бітів. Перегляньте посібник з кодування x264 для отримання додаткової інформації про ffmpeg
.
Тепер ваше завдання - знайти значення CRF, яке:
- знижує загальну швидкість передачі бітів до точки, яку ви можете собі дозволити
- не надто зменшує якість, тому відео все ще виглядає добре
Так, це включає багато кодування та проб і помилок, але це щоденний бізнес, коли ви налаштовуєте та кодуєте відео.
О, і якщо вам не подобається командний рядок, Handbrake - це вільний, багатоплатформенний інструмент, який робить саме те саме. Він навіть має повзунок CRF: