Я должен преобразовать видеофайл из контейнера Matroska в mp4 контейнер. Файл Matroska содержит один h.264 видеотрек и одну звуковую дорожку AC3. Должно быть возможно сделать это без потерь, но как сделать это с собственными инструментами Ubuntu?
Транскодирование не является опцией.
Возможно, самый легкий инструмент для этого ffmpeg
, или avconv
от libav-tools
пакет. Libav является ветвлением FFmpeg, который Ubuntu, переключенная на в течение нескольких лет до Ubuntu 15.04. Это - один из бэкендов для многих инструментов GUI, упомянутых в других ответах.
Изменение контейнера без re-enconding содержания не могло быть более простым:
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 файл, содержит с
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%
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
не обнаружил видео кадр/с правильно. В зависимости от использования AC3
аудиотрек должен быть повторно закодирован во что-то еще перед мультиплексированием.
Теперь Вы повторно мультиплексировали потоки от matroska контейнера в mp4 контейнер, не теряя качества.
Править: MP4 официально не поддерживает аудио AC3, таким образом, аудиотрек должен быть преобразован в поддерживаемый формат (например, AAC, MP3), если Вы хотите, чтобы файл был играем с чем-то еще, чем VLC.
Можно попробовать РУЧНОЙ ТОРМОЗ путем добавления его PPA путем введения этого кода в терминал:
sudo add-apt-repository ppa:stebbins/handbrake-releases
Это имеет хороший графический интерфейс.
При преобразовании от mkv до mp4 это не повторно кодируется.
convertion сделан в течение минуты (для видео с 60 минутами).
sudo apt-get install avidemux
Откройте mkv файл в avidemux.
Выберите безопасный режим, если запрошено.
Оставьте видео как копию.
Выберите File-> Properties. Проверьте, ли аудиокодек aac
.
aac(faac)
.copy
. (Иногда использующий эту опцию аудио может быть вне синхронизации или искажено, в этом случае выбрать aac(faac)
вместо этого.)Выбрать mp4
для формата.
Избранное сохранение, выберите местоположение и введите имя файла с .mp4
как расширение.
Примечание: Иногда (шанс на ~10%) это может перестать работать. Затем используйте handbrake(re-encode)
.
Note2: существует две ссылки, которые помогают Вам:
http://www.ubuntugeek.com/how-to-convert-mkv-file-into-mp4-file-using-avidemux.html
Так как Часть 14 MPEG поддерживает h.264 и AC3 исходно без транскодирования, можно просто переименовать файл, таким образом, это имеет .mp4
расширение вместо a .mkv
расширение.
Можно использовать мое приложение, dmMediaConverter. Просто оставьте "копию" для обоих потоков проверенной (никакое транскодирование) и помещенный .mp4 к имени выходного файла.Именно. Очень простой. http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html
Используя ffmpeg, я пишу скрипт на Python это преобразует все файлы mkv текущего каталога в файлы mp4, поскольку преобразование их по одному раздражает.
При необходимости можно использовать.