Как конвертировать файл .mkv в файл .mp4 без потерь?

Мне нужно преобразовать видеофайл из контейнера Matroska в контейнер mp4. Файл Matroska содержит одну видеодорожку h.264 и одну звуковую дорожку AC3. Должно быть возможно сделать это без потерь, но как это сделать с помощью собственных инструментов Ubuntu?

Перекодирование - это не вариант.

Возможно, самым простым инструментом для этого является ffmpeg, или avconv из libav-tools пакет. Libav - это форк FFmpeg, на который Ubuntu переключалась в течение нескольких лет до Ubuntu 15.04. Это один из бэкендов для многих инструментов графического интерфейса, упомянутых в других ответах.

Смена контейнера без повторного размещения содержимого не может быть проще:

ffmpeg -i input.mkv -codec copy output.mp4
  • Он автоматически определяет преобразование контейнера Matroska в MP4 на основе входных / выходных имен файлов.

  • -codec copy поток копирует или "повторно мультиплексирует" потоки с входа на выход без перекодирования. Думайте об этом как о копировании и вставке.

  • Поведение выбора потока по умолчанию заключается в выборе только одного потока для каждого типа потока. Например, если ваш входной сигнал содержит два видеопотока и один аудиопоток, то будет выбран только видеопоток с наибольшим размером кадра. Добавь -map 0 если вы хотите выбрать все потоки из входных данных.

  • Некоторые контейнеры могут не поддерживать некоторые форматы. Так что проверьте, выбран ли ваш контейнер формат, будь то mkv, mp4 или даже avi имеет поддержку для всех содержание в ваших файлах (видео, аудио, субтитры, данные и т.д.). Например, mp4 не поддерживает субтитры SubRip (.srt файлы).

Получите необходимое программное обеспечение

sudo apt-get install gpac mkvtoolnix

Извлечение видео и аудио из файла matroska

Сначала вам нужно проверить, какие треки содержит файл matroska с помощью

mkvmerge --identify video.mkv

File 'video.mkv': container: MatroskaTrack ID 1: video (V_MPEG4/ISO/AVC)Track ID 2: audio (A_AC3)

Затем извлеките видео и аудио в соответствии с их дорожками с помощью:

mkvextract tracks video.mkv 1:video.h264 2:audio.ac3

Extracting track 1 with the CodecID 'V_MPEG4/ISO/AVC' to the file 'video.h264'. Container format: AVC/h.264 elementary streamExtracting track 2 with the CodecID 'A_AC3' to the file 'audio.ac3'. Container format: Dolby Digital (AC3)Progress: 100%

Мультиплексирование аудио и видео в контейнер mp4

MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4

AVC-H264 import - frame size 1280 x 720 at 24.000 FPSImport results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDRAC3 import - sample rate 48000 - 6 channelsSaving to video.mp4: 0.500 secs Interleaving

Я должен был добавить -fps 24 вариант, потому что MP4Box неправильно определил частоту кадров в секунду видео. В зависимости от использования AC3 звуковая дорожка должна быть перекодирована во что-то другое перед мультиплексированием.

Теперь вы переделали потоки из контейнера matroska в контейнер mp4 без потери качества.

РЕДАКТИРОВАТЬ: MP4 официально не поддерживает аудио AC3, поэтому звуковая дорожка должна быть преобразована в поддерживаемый формат (например. AAC, MP3), если вы хотите, чтобы файл воспроизводился с помощью чего-то другого, кроме VLC.

Вы можете использовать Avidemux

Он имеет хороший графический интерфейс.

При преобразовании из mkv в mp4 он не перекодируется.

Преобразование выполняется в течение минуты (для 60-минутного видео).

  1. sudo apt-get install avidemux

  2. Откройте файл mkv в avidemux.

  3. При появлении запроса выберите безопасный режим.

  4. Оставьте видео в качестве копии.

  5. Выберите Файл-> Свойства. Проверьте, установлен ли аудиокодек aac.

    1. Если аудиокодек НЕ является aac, выберите aac(faac).
    2. В противном случае оставьте его как есть. copy. (Иногда при использовании этой опции звук может быть не синхронизирован или искажен, в этом случае выберите aac(faac) вместо этого.)
  6. Выбрать mp4 для формата.

  7. Выберите сохранить, выберите местоположение и введите имя файла с помощью .mp4 в качестве расширения.

Примечание: Иногда (вероятность ~ 10%) это может привести к сбою. Затем используйте handbrake(re-encode).

Примечание2: есть две ссылки, которые помогут вам:

http://www.ubuntugeek.com/avidemux-free-video-editor-designed-for-simple-cutting-filtering-and-encoding-tasks.html

http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html

enter image description here

Вы можете использовать мое приложение, dmMediaConverter. Просто уходи"копировать" для обоих потоков проверено (без перекодирования) и поставлено .mp4 к имени выходного файла. Это оно. Очень просто.http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html

С помощью ffmpeg я пишу скрипт на python, который преобразует все файлы mkv текущего каталога в файлы mp4, поскольку их преобразование по одному раздражает.

Можете использовать его, если это необходимо.

Конвертировать MKV в MP4

Вы можете попробовать РУЧНОЙ ТОРМОЗ добавив свой PPA, введя этот код в терминал:

sudo add-apt-repository ppa:stebbins/handbrake-releases

Поскольку MPEG Part 14 изначально поддерживает h.264 и AC3 без перекодирования, вы можете просто переименовать файл, чтобы он имел .mp4 расширение вместо .mkv расширение.

это особенно подходящее решение для преобразования файлов Matroska, которые не будут воспроизводиться на телевизоре Samsung, в файлы, совместимые с ним

Смотрите этот вопрос.

На протяжении многих лет я находил это очень полезным, поскольку “Chromecast” поддерживает “H.264” с AAC или MP3 в контейнере MP4. Очень легко транслировать видео с вашего компьютера на “Chromecast”, если у вас есть Chrome с расширением Google cast. Просто перетащите файл “MP4” с правильными кодировками потока в окно браузера и начните потоковую передачу.