Битлента
Пароли, резервные копии, шифрование6 мин чтения·

Как перепаковать MKV в MP4 без перекодирования: команда ffmpeg и случаи, когда она не сработает

Как сменить контейнер видео с MKV на MP4 без повторного сжатия и потери качества, когда перепаковка невозможна и чем она отличается от полного перекодирования.

Кратко

Если кодеки внутри MKV допустимы для MP4, контейнер меняют копированием потоков: ffmpeg -i входной.mkv -c copy выходной.mp4. Это быстро и не ухудшает картинку. Когда кодек или субтитры в MP4 не помещаются, остаётся перекодирование, оно медленнее и каждый раз немного теряет в качестве.

Два действия, которые часто путают

Задача «сделать из MKV файл MP4» может означать разное. В одном случае нужна новая оболочка вокруг тех же данных, в другом — новая запись самих данных с другим кодеком. Различие определяет и время работы, и результат, поэтому начинать стоит с выбора действия.

ПараметрПерепаковка (копирование потоков)Перекодирование
Что делаетПереносит готовые дорожки в другой контейнерРаспаковывает и сжимает дорожки заново
ВремяОбычно минуты, ограничено скоростью дискаЗаметно дольше, зависит от процессора
КачествоНе меняется, данные те жеНемного снижается при каждом цикле сжатия
Размер файлаПочти тот жеМожет отличаться в любую сторону
ОграниченияКодеки должны подходить для MP4Любые, можно выбрать удобные

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

Перепаковка командой ffmpeg по шагам

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

  1. Положите файл в простую папку и откройте в ней терминал или командную строку.
  2. Выполните команду: ffmpeg -i film.mkv -c copy film.mp4. Параметр -i задаёт исходный файл, а -c copy означает копирование без перекодирования.
  3. Дождитесь завершения. Программа выведет итоговую строку с размером и длительностью.
  4. Откройте результат на нужном устройстве и проверьте звук, субтитры и перемотку.

Без дополнительных указаний ffmpeg выбирает по одной дорожке каждого типа (видео, звук, субтитры), и если в MKV есть субтитры, не подходящие для MP4, команда может завершиться ошибкой: в таком случае добавьте параметр -sn, чтобы не переносить субтитры. Если в MKV несколько озвучек, добавьте параметр -map 0, и программа попытается перенести все потоки. Для MP4 это может закончиться ошибкой, если какой-то поток не допускается в этом контейнере, и тогда придётся перечислять нужные дорожки вручную, например -map 0:v -map 0:a:0.

Имена файлов с пробелами берите в кавычки. Исходный файл команда не изменяет, она создаёт новый, поэтому даже неудачная попытка оригинал не затрагивает.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Когда копирование не получится

Сообщение об ошибке при -c copy обычно означает, что одна из дорожек не может находиться в MP4. Чаще всего проблемы создают три вещи.

  • Звук. Некоторые многоканальные и «студийные» форматы звука допустимы в MKV, но не в MP4. Звук можно перекодировать отдельно, оставив видео копированием: -c:v copy -c:a aac.
  • Графические субтитры. Субтитры, хранящиеся как картинки, в MP4, как правило, напрямую перенести нельзя. Текстовые субтитры можно преобразовать параметром -c:s mov_text, который задаёт формат текстовых субтитров для MP4.
  • Кодек видео. Если видео записано кодеком, который контейнер MP4 не принимает, копирование невозможно, и нужен полный цикл перекодирования.

Отдельный случай — главы и вложенные файлы, например шрифты для оформленных субтитров. MP4 поддерживает главы, но способ их хранения отличается, и при перепаковке часть служебных данных может не перейти. Если без них не справиться, лучше оставить архивную копию в MKV и сделать MP4 только для просмотра.

Прежде чем что-то менять, посмотрите состав файла программой ffprobe, как описано на странице о контейнерах и кодеках. Со списком потоков перед глазами проще решить, что копировать, а что преобразовывать.

Перекодирование, если оно нужно

Когда устройство не открывает кодек видео, приходится кодировать его заново. Типичный вариант — получить универсальное сочетание H.264 и AAC: ffmpeg -i film.mkv -c:v libx264 -crf 20 -c:a aac film.mp4. Параметр -crf задаёт качество кодека x264: шкала идёт от 0 до 51, меньшее число означает более высокое качество и больший файл, значение по умолчанию равно 23. Для домашнего просмотра выбирают значение около двух десятков, а точное число подбирают пробой на коротком фрагменте.

Параметр -preset (медленнее — меньше размер при том же качестве) позволяет обменять время на объём. Если нужен фрагмент для проверки, добавьте -t 60: программа обработает только первую минуту, и результат можно посмотреть на устройстве до запуска полной работы.

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

Проверка результата и порядок хранения

Готовый файл стоит проверить до того, как оригинал уйдёт с диска. Достаточно нескольких минут: так вы заметите проблемы, которые иначе всплывут через год, когда исходника уже не будет.

  1. Сравните длительность исходного и нового файла: они должны практически совпадать.
  2. Проверьте число дорожек звука и субтитров в ffprobe или в проигрывателе.
  3. Промотайте файл в начало, середину и конец. Рассинхронизация звука иногда проявляется только после перемотки.
  4. Откройте файл на устройстве, ради которого шла работа, например на телевизоре.

Храните результат рядом с оригиналом, в папке с понятным именем. Правила для имён файлов и папок описаны на отдельной странице, а о том, как не потерять архив при поломке диска, рассказывает правило резервного копирования 3-2-1. Если фильм записан вами или получен законным путём, имеет смысл хранить оригинальный MKV как исходный материал, а MP4 считать рабочей копией для просмотра. Тогда при смене устройств или при появлении более подходящего формата вы сможете повторить преобразование из исходных данных, а не из уже пережатой копии.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
видеоffmpegMKVMP4конвертация

Часто задаваемые вопросы

Читайте также