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


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

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


104
2018-06-24 23:22


происхождения


Видеть это вопрос, - Binarylife
это, в частности, решение для конвертирования файлов Matroska, которые не будут воспроизводиться на телевизоре Samsung, в файлы, совместимые с ним - knocte
За эти годы я нашел это очень полезным, поскольку Chromecast опоры H.264 с AAC или MP3 в MP4 контейнер. Очень легко транслировать видео с вашего компьютера на Chromecast если у вас есть Chrome с расширением Google. Просто перетащите MP4 с правильными потоковыми кодировками в окне браузера и началом потоковой передачи. - Seppo Erviälä


ответы:


Возможно, самым простым инструментом для этого является 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 файлы).


136
2017-10-01 23:59



Перекодировать аудио в AAC, оставив видео как AVC: avconv -i input.mkv -c:v copy -c:a libfaac output.mp4 (Я использовал ffmpeg, я полагаю, avconv имеет одну и ту же командную строку args здесь) - camh
@camh: То, что вы сказали, работает, но обратите внимание на 2 вещи: 1) Он оставит видео как есть, независимо от того, является ли это AVC или что-то еще; 2) Он будет не только преобразовывать аудио в AAC, но и формат контейнера от mkv до mp4 - MestreLion
@AquariusPower: просто имейте в виду, что OP не хочет переназначать потоки: он хочет конвертировать только контейнер и хранить все потоки. - MestreLion
@AquariusPower: вы пробовали просто с -map 0 для получения обоих аудиопотоков? Как я сказал в ответ: «Поведение потока по умолчанию - это выбор только одного потока для типа потока» - MestreLion
использование -c:s mov_text если вам нужно сохранить, например. srt трек субтитров. - Seppo Erviälä


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

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, не теряя при этом никакого качества.

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


24
2018-06-25 11:03



Будет ли это работать с субтитрами? - CyberSkull


Вы можете использовать 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


12
2017-08-03 16:43



Работал как шарм. У меня были проблемы с синхронизацией после принятого ответа, но не с этим. - moraes
работает очень хорошо - psychok7


enter image description here

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


2
2018-06-21 06:17





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


-2
2017-12-26 15:21



Он может поддерживать кодеки внутри, но это не значит, что он будет работать в приложении, которое не понимает Matroska. Это будет работать, только если приложение поддерживает Matroska и смотрит на магический номер вместо расширения. - Arda Xi
Переименование файла не будет конвертировать формат контейнера, и это может смутить приложение (и пользователей). Как сказал @ArdaXi, приложение все равно должно будет поддержать Matroska, чтобы играть в нее. - MestreLion


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

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

-2
2018-06-25 03:13



Кажется, это видео-транскодер. Я не хочу снова сжимать видеодорожку, поскольку он уже находится в формате h.264. - Seppo Erviälä
Handbrake - отличный транскодер, но я бы никогда не использовал его для преобразования формата файла. - CyberSkull
Я очень люблю Handbreak, но, к сожалению, он работает без потерь для аудио (и субтитров). Я не мог найти способ скопировать видео без его перекодирования, и OP специально запросил преобразование формата без потерь. - MestreLion