web-dev-qa-db-fra.com

Comment convertir un fichier .mkv en un fichier .mp4 sans perte?

J'ai besoin de convertir un fichier vidéo de Matroska conteneur en conteneur MP4. Le fichier Matroska contient une piste vidéo h.264 et une piste audio AC3. Cela devrait être possible de le faire sans perte, mais comment le faire avec les outils natifs Ubuntu?

Le transcodage n'est pas une option.

119
Seppo Erviälä

L’outil le plus simple à cet égard est peut-être ffmpeg ou avconv du package libav-tools. Libav est un fork de FFmpeg, sur lequel Ubuntu est passé quelques années jusqu’à Ubuntu 15.04. C'est l'un des moteurs de nombreux outils d'interface graphique mentionnés dans d'autres réponses.

Changer de conteneur sans reconduire le contenu ne pourrait être plus simple:

ffmpeg -i input.mkv -codec copy output.mp4
  • Il détecte automatiquement une conversion de conteneur Matroska vers MP4 en fonction des noms de fichiers d'entrée/de sortie.

  • -codec copy copie, ou "re-mux", les flux de l'entrée à la sortie sans réencodage. Pensez-y comme un copier-coller.

  • Le comportement de sélection de flux par défaut consiste à sélectionner un seul flux par type de flux. Par exemple, si votre entrée comporte deux flux vidéo et un flux audio, seul le flux vidéo présentant la plus grande taille d'image sera sélectionné. Ajoutez -map 0 si vous souhaitez sélectionner tous les flux de l'entrée.

  • Certains conteneurs peuvent ne pas prendre en charge certains formats. Vérifiez donc si votre format conteneur choisi, que ce soit mkv, mp4 ou même avi, prend en charge tous les conten de vos fichiers (vidéo, audio, sous-titres, données, etc.). . Par exemple, mp4 ne prend pas en charge les sous-titres SubRip (fichiers .srt).

159
MestreLion

Obtenir le logiciel nécessaire

Sudo apt-get install gpac mkvtoolnix

Extraire la vidéo et l'audio du fichier matroska

Vous devez d’abord vérifier les pistes que contient le fichier matroska avec

mkvmerge --identify video.mkv

File 'video.mkv': container: Matroska
Track ID 1: video (V_MPEG4/ISO/AVC)
Track ID 2: audio (A_AC3)

Extrayez ensuite la vidéo et l'audio en fonction de leurs pistes avec:

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%

Audio et vidéo mux dans le conteneur 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

Je devais ajouter l'option -fps 24 car MP4Box ne détectait pas correctement les images par seconde. En fonction de l'utilisation, la piste audio AC3 doit être ré-encodée dans un autre fichier avant le multiplexage.

Maintenant, vous avez remodelé les flux du conteneur matroska dans le conteneur mp4 sans perte de qualité.

EDIT: MP4 ne prenant pas officiellement en charge l’audio AC3, la piste audio doit donc être convertie dans un format pris en charge (par exemple, AAC, MP3) si vous voulez que le fichier puisse être lu avec autre chose que VLC.

24
Seppo Erviälä

Vous pouvez utiliser Avidemux

Il a une bonne interface graphique.

Lors de la conversion de mkv en mp4, il n'est pas ré-encodé.

La conversion se fait en une minute (pour une vidéo de 60 minutes).

  1. Sudo apt-get install avidemux

  2. Ouvrez le fichier mkv dans avidemux.

  3. Sélectionnez le mode sans échec si vous y êtes invité.

  4. Laissez la vidéo en copie.

  5. Choisissez Fichier-> Propriétés. Vérifiez si le codec audio est aac.

    1. Si le codec audio n’est PAS AAC, sélectionnez aac(faac).
    2. Sinon, laissez-le en tant que copy. (Parfois, en utilisant cette option, l'audio peut être désynchronisé ou déformé, dans ce cas, sélectionnez aac(faac) à la place.)
  6. Sélectionnez mp4 pour le format.

  7. Sélectionnez Enregistrer, choisissez l'emplacement et tapez un nom de fichier avec .mp4 comme extension.

Remarque: Parfois (environ 10% de chance), il peut échouer. Ensuite, utilisez handbrake(re-encode).

Note2: il existe deux liens qui vous aident:

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
loksena

enter image description here

Vous pouvez utiliser mon application, dmMediaConverter . Il suffit de laisser " copie " pour les deux flux cochés (sans transcodage) et de mettre . Mp4 au nom du fichier de sortie. C'est tout. Très simple. http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html

2
mdalacu