42

У меня есть тонна MKV-файлов, которые мне нужно конвертировать в MP4, и выбранное мной программное обеспечение - Handbrake.

Я застрял на том, какие настройки будут лучше для преобразования. Я хочу сохранить полное качество. Должен ли я просто конвертировать с исходными настройками и ничего не менять, или мне нужно что-то изменить?

2 ответа2

84

В чем проблема с ручником?

Когда вы используете 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, который использует Handbrake кодера H.264, сохраните его в контейнере MP4, вы потеряете качество независимо от того, что, если вы не установите битрейт или добротность настолько высока, что вы (действительно) не увидите разницу. Но тогда размер файла также будет больше.

В идеальном случае вы конвертируете видео в несжатое видео, которое не потеряет вас в качестве, но даст вам файлы размером в дюжину гигабайт даже на несколько минут видеоматериала.

Хорошо, но мне действительно нужно перекодировать!

Если вам действительно нужно перекодировать, не устанавливайте среднюю скорость передачи, а выбирайте коэффициент постоянной скорости, который напоминает "постоянное качество". Точно так же, как "переменная скорость передачи данных" для MP3: он будет тратить биты на нужные видео части и улучшать общее качество - при том же размере файла.

Нормальные значения CRF составляют от 19 до 24, где более низкое значение означает "лучше". Итак, вы можете попробовать с коэффициентом ставки 19. Кроме того, обязательно установите "Высокий" профиль, который позволяет кодировщику использовать все сигналы тревоги и оптимизировать качество для заданной скорости передачи данных.

4

Это работает очень хорошо для меня. Ниже приведен код для преобразования всех файлов .mkv в .mp4 в Windows.

  • Вам может понадобиться добавить ffmpeg к вашему пути. Вы можете просто указать полный путь к исполняемому файлу ffmpeg, D:\apps\ffmpeg\bin\ffmpeg.exe
  • Загрузите ffmpeg для Windows здесь.
  • Использование: Перетащите файл .mkv на него. Это сделает весь каталог.

Сохраните в файле с именем convert.bat.

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause

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