Question Comment convertir le fichier .mkv en fichier .mp4 sans perte?


Je dois convertir un fichier vidéo du conteneur Matroska en conteneur mp4. Le fichier Matroska contient une piste vidéo h.264 et une piste audio AC3. Cela devrait être possible sans perte, mais comment le faire avec les outils natifs d'Ubuntu?

Le transcodage n'est pas une option.


104
2018-06-24 23:22


origine


Regarde ça question. - Binarylife
c'est surtout une solution pour convertir les fichiers Matroska qui ne sont pas lus sur un téléviseur Samsung en fichiers compatibles - knocte
Au fil des ans, j'ai trouvé cela très utile Chromecast les soutiens H.264 avec AAC ou MP3 dans un MP4 récipient. Il est très facile de diffuser des vidéos depuis votre ordinateur vers Chromecast si vous avez Chrome avec l'extension Google Cast. Faites simplement glisser et déposez un MP4 avec des encodages de flux corrects dans une fenêtre de navigateur et commencer à diffuser. - Seppo Erviälä


Réponses:


Peut-être l'outil le plus simple pour cela est ffmpeg, ou avconv du libav-tools paquet. Libav est un fork de FFmpeg, auquel Ubuntu a basculé pendant quelques années jusqu'à Ubuntu 15.04. C'est l'un des backends de nombreux outils d'interface graphique mentionnés dans d'autres réponses.

Changer de conteneur sans réintégrer le contenu ne peut pas ê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 / sortie.

  • -codec copy copies de flux, ou "re-muxes", 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 ayant la taille d’image la plus grande sera sélectionné. Ajouter -map 0 si vous souhaitez sélectionner tous les flux de l'entrée.

  • Certains conteneurs peuvent ne pas prendre en charge certains formats. Alors vérifiez si votre choisi récipient format, que ce soit mkv, mp4 ou même avi a un soutien pour tous les contenu dans vos fichiers (vidéo, audio, sous-titres, données, etc.). Par exemple, mp4 ne supporte pas les sous-titres SubRip (.srt des dossiers).


136
2017-10-01 23:59



Pour transcoder l'audio en AAC, en laissant la vidéo en AVC: avconv -i input.mkv -c:v copy -c:a libfaac output.mp4 (J'ai utilisé ffmpeg, je suppose que avconv a les mêmes arguments en ligne de commande ici) - camh
@camh: Ce que vous avez dit fonctionne, mais veuillez noter 2 choses: 1) Il laissera la vidéo telle quelle, que ce soit AVC ou autre chose; 2) Il convertira non seulement l’audio en AAC mais aussi le format du conteneur de mkv en mp4 - MestreLion
@ AquariusPower: sachez que l'OP ne veut pas remapper les flux: il veut uniquement convertir le conteneur et conserver tous les flux. - MestreLion
@ AquariusPower: avez-vous essayé simplement avec -map 0 obtenir les deux flux audio? Comme je l'ai dit dans la réponse: "Le comportement de sélection de flux par défaut consiste à sélectionner un seul flux par type de flux" - MestreLion
Utilisation -c:s mov_text option si vous devez garder par exemple. srt piste de sous-titres. - Seppo Erviälä


Obtenir le logiciel nécessaire

sudo apt-get install gpac mkvtoolnix

Extraire vidéo et audio du fichier matroska

Tout d'abord, vous devez vérifier quelles pistes contient le fichier matroska

mkvmerge --identify video.mkv

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

Ensuite, extrayez 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%

Mux audio et vidéo 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 -fps 24 option parce que MP4Box n'a pas détecté correctement les fps vidéo. En fonction de l'utilisation AC3 La piste audio doit être ré-encodée dans quelque chose d’autre avant le muxing.

Maintenant, vous avez refait le flux des conteneurs du conteneur matroska dans le conteneur mp4 sans perdre aucune qualité.

MODIFIER: MP4 ne prend pas officiellement en charge l'audio AC3, donc la piste audio doit être convertie dans un format pris en charge (par exemple, AAC, MP3) si vous souhaitez que le fichier soit lisible avec autre chose que VLC.


24
2018-06-25 11:03



Est-ce que cela fonctionnera avec des pistes de sous-titres? - CyberSkull


Vous pouvez utiliser Avidemux

Il a une bonne interface graphique.

Lors de la conversion de mkv en mp4, il n'est pas recodé.

La conversion est effectuée 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 ê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 comme copy. (Parfois, en utilisant cette option, l’audio peut être désynchronisé ou déformé, dans ce cas sélectionnez aac(faac) au lieu.)
  6. Sélectionner mp4 pour le format.

  7. Sélectionnez save, choisissez location et tapez un nom de fichier avec .mp4 comme extension.

Remarque: Parfois (~ 10% de chance) il peut échouer. Puis utilisez handbrake(re-encode).

Note 2: il y a 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
2017-08-03 16:43



Travaillé comme un charme. J'ai eu des problèmes de synchronisation en suivant la réponse acceptée, mais pas avec celle-ci. - moraes
fonctionne très bien - psychok7


enter image description here

Vous pouvez utiliser mon application, dmMediaConverter. Va t'en "copie"pour les deux flux vérifiés (pas de transcodage) et mis .mp4 au nom du fichier de sortie. C'est tout. Très simple. http://dmsimpleapps.blogspot.ro/2014/04/dmmediaconverter.html


2
2018-06-21 06:17





Etant donné que MPEG Part 14 supporte nativement les formats h.264 et AC3 sans transcodage, vous pouvez simplement renommer le fichier pour .mp4 extension au lieu d'un .mkv extension.


-2
2017-12-26 15:21



Cela pourrait prendre en charge les codecs à l'intérieur, mais cela ne signifie pas que cela fonctionnera dans une application qui ne comprend pas Matroska. Cela ne fonctionnera que si l'application prend en charge Matroska et examine le nombre magique au lieu de l'extension. - Arda Xi
Renommer le fichier ne convertira pas le format du conteneur, et cela pourrait perturber l'application (et les utilisateurs). Comme @ArdaXi l'a dit, l'application devra toujours supporter Matroska pour y jouer. - MestreLion


Tu peux essayer FREIN À MAIN en ajoutant son PPA en tapant ce code dans le terminal:

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

-2
2018-06-25 03:13



Cela semble être un transcodeur vidéo. Je ne veux pas compresser à nouveau la piste vidéo car elle est déjà au format h.264. - Seppo Erviälä
Le frein à main est un excellent transcodeur, mais je ne l'utiliserais jamais pour la conversion de format de fichier. - CyberSkull
J'adore absolument Handbreak, mais malheureusement cela ne fonctionne que sans perte pour l'audio (et les sous-titres). Je n'ai pas pu trouver un moyen de copier la vidéo sans la transcoder, et l'OP demandait spécifiquement une conversion de format sans perte. - MestreLion