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

104

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

Транскодирование не является вариантом.     

задан Seppo Erviälä 24.06.2011 в 23:22
источник

6 ответов

137

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

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

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

  • -codec copy копирует потоки или «ремиксы», потоки с входа на вывод без повторного кодирования. Подумайте об этом как о копировании и вставке.

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

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

ответ дан MestreLion 01.10.2012 в 23:59
источник
24

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

sudo apt-get install gpac mkvtoolnix

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

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

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track 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 stream
Extracting 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 FPS
Import results: 31671 samples - Slices: 5672 I 125048 P 122648 B - 32288 SEI - 4936 IDR
AC3 import - sample rate 48000 - 6 channels
Saving to video.mp4: 0.500 secs Interleaving

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

Теперь у вас есть ремуксированные потоки из контейнера matroska в контейнер mp4, не теряя при этом никакого качества.

EDIT: MP4 официально не поддерживает аудио AC3, поэтому звуковая дорожка должна быть преобразована в поддерживаемый формат (например, AAC, MP3), если вы хотите, чтобы файл воспроизводился с чем-то другим, кроме VLC.

    
ответ дан Seppo Erviälä 25.06.2011 в 11:03
12

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

У этого есть хороший интерфейс графического интерфейса.

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

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

  1. sudo apt-get install avidemux

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

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

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

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

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

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

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

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

Ссылка

Ссылка

    
ответ дан loksena 03.08.2012 в 16:43
2

Выможетеиспользоватьмоеприложение, dmMediaConverter . Просто оставьте « копировать » для отмеченных потоков (без перекодирования) и поместите .mp4 в имя выходного файла. Вот и все. Очень просто. Ссылка

    
ответ дан mdalacu 21.06.2017 в 06:17
-2

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

    
ответ дан Richard 26.12.2013 в 15:21
-2

Вы можете попробовать HANDBRAKE , добавив свой PPA, введя этот код в терминал:

sudo add-apt-repository ppa:stebbins/handbrake-releases
    
ответ дан 13east 25.06.2011 в 03:13