Мне нужно преобразовать видеофайл из контейнера 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 файлы).
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%
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.
При преобразовании из mkv в mp4 он не перекодируется.
Преобразование выполняется в течение минуты (для 60-минутного видео).
sudo apt-get install avidemux
Откройте файл mkv в avidemux.
При появлении запроса выберите безопасный режим.
Оставьте видео в качестве копии.
Выберите Файл-> Свойства. Проверьте, установлен ли аудиокодек aac.
Если аудиокодек НЕ является aac, выберите aac(faac).
В противном случае оставьте его как есть. copy. (Иногда при использовании этой опции звук может быть не синхронизирован или искажен, в этом случае выберите aac(faac) вместо этого.)
Выбрать mp4 для формата.
Выберите сохранить, выберите местоположение и введите имя файла с помощью .mp4 в качестве расширения.
Примечание: Иногда (вероятность ~ 10%) это может привести к сбою. Затем используйте handbrake(re-encode).
Примечание2: есть две ссылки, которые помогут вам:
С помощью ffmpeg я пишу скрипт на python, который преобразует все файлы mkv текущего каталога в файлы mp4, поскольку их преобразование по одному раздражает.
Поскольку MPEG Part 14 изначально поддерживает h.264 и AC3 без перекодирования, вы можете просто переименовать файл, чтобы он имел .mp4 расширение вместо .mkv расширение.
это особенно подходящее решение для преобразования файлов Matroska, которые не будут воспроизводиться на телевизоре Samsung, в файлы, совместимые с ним
На протяжении многих лет я находил это очень полезным, поскольку “Chromecast” поддерживает “H.264” с AAC или MP3 в контейнере MP4. Очень легко транслировать видео с вашего компьютера на “Chromecast”, если у вас есть Chrome с расширением Google cast. Просто перетащите файл “MP4” с правильными кодировками потока в окно браузера и начните потоковую передачу.