Мне нужно конвертировать видеофайл из контейнера Matroska в контейнер mp4. Файл Matroska содержит одну видеодорожку h.264 и одну звуковую дорожку AC3. Это должно быть возможно сделать без потерь, но как это сделать с помощью встроенных инструментов Ubuntu?
Транскодирование не вариант.
Chromecast
подставкиH.264
с контейнеромAAC
илиMP3
вMP4
нем. Это очень легко для потоковой передачи видео с вашего компьютера,Chromecast
если у вас есть Chrome с расширением Google Cast. Просто перетащите файлMP4
с правильной кодировкой потока в окно браузера и начните потоковую передачу.Ответы:
Возможно, самый простой инструмент для этого
ffmpeg
илиavconv
изlibav-tools
пакета. Libav - это форк FFmpeg, на который Ubuntu перешла за несколько лет до Ubuntu 15.04. Это один из бэкэндов для многих инструментов GUI, упомянутых в других ответах.Изменение контейнера без повторного добавления контента не может быть проще:
Он автоматически определяет преобразование контейнера Matroska в MP4 на основе имен файлов ввода / вывода.
-codec copy
потоковые копии или «повторное мультиплексирование» потоков от входа к выходу без перекодирования. Думайте об этом как о копировании и вставке.По умолчанию при выборе потока выбирается только один поток на тип потока. Например, если ваш вход имеет два видеопотока и один аудиопоток, то будет выбран только видеопоток с наибольшим размером кадра. Добавить,
-map 0
если вы хотите выбрать все потоки из ввода.Некоторые контейнеры могут не поддерживать некоторые форматы. Поэтому проверить , если ваш выбранный контейнер формата, будь то
mkv
,mp4
или дажеavi
поддерживает все содержимое в ваших файлах (видео, аудио, субтитры, данные и т.д.). Например,mp4
не поддерживает SubRip субтитры (.srt
файлы).источник
avconv -i input.mkv -c:v copy -c:a libfaac output.mp4
(я использовал ffmpeg, я полагаю, что avconv имеет те же аргументы командной строки)-map 0
получить оба аудиопотока? Как я сказал в ответе: «Поведение выбора потока по умолчанию состоит в том, чтобы выбирать только один поток для каждого типа потока»-c:s mov_text
опцию, если вам нужно сохранить, например.srt
дорожка субтитров.Получить необходимое программное обеспечение
Извлечение видео и аудио из файла Matroska
Для начала необходимо проверить, какие дорожки содержит файл matroska.
mkvmerge --identify video.mkv
Затем извлеките видео и аудио в соответствии с их треками:
mkvextract tracks video.mkv 1:video.h264 2:audio.ac3
Mux аудио и видео в MP4 контейнер
MP4Box -fps 24 -add video.h264 -add audio.ac3 video.mp4
Мне пришлось добавить
-fps 24
опцию, потомуMP4Box
что не правильно определяет видео fps. В зависимости от использованияAC3
звуковая дорожка должна быть перекодирована во что-то другое перед муксингом.Теперь вы перепутали потоки из контейнера matroska в контейнер mp4 без потери качества.
РЕДАКТИРОВАТЬ: MP4 официально не поддерживает аудио AC3, поэтому аудиодорожка должна быть преобразована в поддерживаемый формат (например, AAC, MP3), если вы хотите, чтобы файл мог воспроизводиться с чем-то еще, кроме VLC.
источник
Вы можете использовать Avidemux
Имеет хороший графический интерфейс.
При преобразовании из mkv в mp4 он не перекодируется.
Преобразование выполняется в течение минуты (для 60-минутного видео).
sudo apt-get install avidemux
Откройте файл mkv в avidemux.
Выберите безопасный режим, если будет предложено.
Оставьте видео как копию.
Выберите Файл-> Свойства. Проверьте, есть ли аудиокодек
aac
.aac(faac)
.copy
. (Иногда при использовании этой опции звук может быть не синхронизирован или искажен, в этом случае выберитеaac(faac)
вместо этого.)Выберите
mp4
для формата.Выберите сохранить, выберите местоположение и введите имя файла с
.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
источник
Вы можете использовать мое приложение, dmMediaConverter . Просто оставьте « copy » для обоих потоков отмеченными (без перекодирования) и поместите .mp4 в имя выходного файла. Вот и все. Очень простой. http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html
источник
Поскольку MPEG Part 14 изначально поддерживает h.264 и AC3 без транскодирования, вы можете просто переименовать файл, чтобы он имел
.mp4
расширение вместо.mkv
расширения.источник
Вы можете попробовать HANDBRAKE , добавив его PPA, введя этот код в терминал:
источник