У чому проблема з ручним гальмом?
Коли ви використовуєте Handbrake для перетворення одного формату контейнера в інший (наприклад, MKV до MP4 у вашому випадку), Handbrake повторно кодує відео. Дивіться також відповідний запит на функцію, який дозволив би пройти відеозапис:
Вибачте, додавати відеозапис не планується. HandBrake призначений для відеопередавача. Він не був розроблений таким чином, щоб він міг пройти наскрізь.
Отже, щоразу, коли ви міняєте контейнери за допомогою Handbrake, ваше відео буде перекодовано, а це означає, що а) потребує часу і б) може призвести до втрати якості.
Чи потрібно повторно кодувати? Не можу я просто поміняти контейнер?
Оскільки проходження не можливе, запитайте себе: чи потрібно повторно кодувати? Якщо ви хочете лише змінити контейнер з MKV на MP4, вам зазвичай не потрібно нічого кодувати , ви просто поміняєте "обгортання" навколо відео. Це не втрачає якості, і це буде набагато швидшим процесом.
Ви можете легко поміняти контейнери за допомогою FFmpeg - просто потрібно сказати йому, щоб скопіювати потоки відео та аудіо:
ffmpeg -i input.mkv -c copy -map 0 output.mp4
Також є такі інструменти, як MP4Box, які також можуть створювати MP4-контейнери - те ж саме існує для MKV з MKVtoolnix .
Однак є великий застереження: це працює лише в тому випадку, якщо аудіо- та відеокодеки підтримуються в цільовому (MP4) контейнері, що стосується, наприклад, H.264 / H.265 та AAC, але не для багатьох інших. Крім того, підтримка формату субтитрів для MP4 відрізняється від MKV і насправді досить обмежена, тому ця команда може вийти з ладу.
Якщо ця команда не працює і якщо ваш вхід використовує неправильні кодеки для вихідного контейнера, вам, ймовірно, доведеться повторно кодувати . У цьому випадку кодеки будуть адаптовані до вихідного контейнера.
Щоб зрозуміти, чому це необхідно, важливо дізнатися різницю між відеокодеками та контейнерами . Це допоможе вам зрозуміти, чому працює зміна контейнерів і чому насправді контейнери MP4 та MKV мають мало спільного з відеокодеками.
Чому повторне кодування все-таки погано?
Ви можете (як правило) не зберігати повну якість при кодуванні відео, яке вже було закодовано. Це тому, що оригінал вже був стиснутий, викидаючи інформацію, і, роблячи це знову, ви вносите втрати покоління .
Часто вам потрібно перекодувати відео, коли, наприклад, його розміри змінюються, або вам потрібна певна швидкість передачі бітів, щоб втиснути ваш потік відео, або для вашого оригінального відео використовується кодек, який ви не можете відтворити з будь-якої причини.
Отже, якщо ви завантажите MKV-відео у Handbrake і перекодуєте його за допомогою x264, кодер H.264 Handbrake використовує, зберігаючи його в контейнері MP4, ви втратите якість незалежно від того, якщо ви не встановите бітрейт або коефіцієнт якості настільки високий, що різниці ви не побачите. Але тоді і розмір файлу буде більшим.
В ідеальному випадку ви перетворите відео на нестиснене відео, яке не втратить вам ніякої якості, але надасть вам файли розміром з десяток гігабайт навіть за кілька хвилин відеоматеріалів.
Гаразд, але мені дійсно доведеться перекодувати!
Якщо вам дійсно доведеться перекодувати, переконайтеся, що ви не встановлюєте середній бітрейт, а оберіть коефіцієнт постійної швидкості , який є чимось на зразок "постійної якості". Так само, як "змінна швидкість передачі бітів" для MP3: вона обов'язково витратить біти на потрібні їм відео частини та покращить загальну якість - при тому ж розмірі файлу.
Здорові значення CRF складають від 19 до 24, де нижчі означають "краще". Отже, ви можете спробувати з коефіцієнтом швидкості 19. Також не забудьте встановити профіль "Високий", який дозволяє кодеру використовувати всі дзвіночки та оптимізувати якість для заданої швидкості передачі.