Paramètres de frein à main pour convertir MKV en MP4 tout en conservant la qualité d'origine


44

J'ai une tonne de fichiers MKV que j'ai besoin de convertir en MP4 et le logiciel que j'ai choisi est Handbrake.

Je suis coincé sur quels réglages seraient les meilleurs pour la conversion. Je veux conserver toute la qualité. Dois-je simplement convertir avec les paramètres d'origine sans rien changer ou dois-je modifier quelque chose en particulier?


Voici un guide assez détaillé sur les réglages de Handbrake mattgadient.com/2013/06/12/…
janot

Je reçois une erreur sur certains fichiers (pour mkv à mp4 et mp4 à mkv): Le fichier de sortie n ° 0 ne contient aucun flux. Quelqu'un a une idée de ce que cela signifie?
PrimitiveNom

Réponses:


86

Quel est le problème avec Handbrake?

Lorsque vous utilisez Handbrake pour convertir un format de conteneur en un autre (par exemple, MKV en MP4 dans votre cas), Handbrake ré-encodera la vidéo. Voir également la demande de fonctionnalité respective qui aurait activé la transmission vidéo:

Désolé, l'ajout de relais vidéo n'est pas planifié. HandBrake est conçu pour être un transcodeur vidéo. Ce n'était pas conçu pour permettre le passthrough.

Donc, chaque fois que vous changez de conteneur avec Handbrake, votre vidéo va être ré-encodée, ce qui signifie que a) prend du temps et b) peut entraîner une perte de qualité.

Dois-je ré-encoder? Ne pourrais-je pas simplement échanger le conteneur?

Puisque le relais n'est pas possible, demandez-vous: Dois-je ré-encoder? Si vous voulez seulement changer le conteneur de MKV en MP4, vous n'avez généralement pas besoin de coder , vous devez simplement changer le "wrapping" de la vidéo. Cela ne perd pas en qualité et le processus sera beaucoup plus rapide.

Vous pouvez facilement échanger des conteneurs avec FFmpeg - il vous suffit de lui dire de copier les flux vidéo et audio:

ffmpeg -i input.mkv -c copy -map 0 output.mp4

Il existe également des outils tels que MP4Box qui peuvent également créer des conteneurs MP4 - il en va de même pour MKV avec MKVtoolnix .

Toutefois, il y a un inconvénient majeur: cela ne fonctionne que si les codecs audio et vidéo sont pris en charge dans le conteneur cible (MP4), comme c'est le cas pour H.264 / H.265 et AAC, par exemple, mais pas pour beaucoup d'autres. De plus, la prise en charge du format de sous-titre pour MP4 est différente de MKV et est en fait assez restreinte. Cette commande peut donc échouer.

Si cette commande ne fonctionne pas et si votre entrée utilise les codecs incorrects pour le conteneur de sortie, vous devrez probablement ré-encoder . Dans ce cas, les codecs seront adaptés au conteneur de sortie.

Pour comprendre pourquoi cela est nécessaire, il est important de connaître la différence entre les codecs vidéo et les conteneurs . Cela vous aidera à comprendre pourquoi le changement de conteneurs fonctionne et pourquoi les conteneurs MP4 et MKV ont peu à voir avec les codecs vidéo.

Pourquoi est-ce que le réencodage est mauvais, de toute façon?

Vous ne pouvez (généralement) pas conserver une qualité optimale lors du codage d'une vidéo déjà codée. Cela est dû au fait que l'original a déjà été compressé en jetant des informations et qu'en le faisant à nouveau, vous introduisez une perte de génération .

Souvent, vous souhaitez réencoder la vidéo lorsque, par exemple, ses dimensions changent, ou si vous avez besoin d’un débit binaire spécifique pour compresser votre flux vidéo, ou si votre vidéo originale utilise un codec que vous ne pouvez pas lire pour une raison quelconque.

Ainsi, si vous chargez votre vidéo MKV dans Handbrake et que vous la réencodez avec x264, le codeur H.264 qu’elle utilise, stockez-la dans un conteneur MP4, vous perdrez de la qualité quel que soit le résultat, à moins que vous ne définissiez le débit facteur de qualité si élevé que vous ne verrez pas (vraiment) la différence. Mais dans ce cas, la taille du fichier sera également plus grande.

Dans l'idéal, convertissez la vidéo en une vidéo non compressée, ce qui ne vous fera perdre aucune qualité, mais vous fournira des fichiers d'une taille de 12 Go, même pour quelques minutes de matériel vidéo.

D'accord, mais je dois vraiment ré-encoder!

Si vous devez vraiment ré-encoder, veillez à ne pas définir un débit binaire moyen, mais choisissez un facteur de débit constant , qui s'apparente à "qualité constante". Tout comme "débit binaire variable" pour le format MP3: cela vous garantira de dépenser les bits sur les parties vidéo qui en ont besoin et d'améliorer la qualité globale - à la même taille de fichier.

Les valeurs de CRF de Sane vont de 19 à 24, où bas signifie "meilleur". Vous pouvez donc essayer avec un facteur de débit de 19. De même, veillez à définir le profil "Elevé", qui permet au codeur d’utiliser toutes les options possibles et d’optimiser la qualité pour un débit binaire donné.


Merci! Il semble que vous soyez la seule personne qui semble s'intéresser à cette question et m'aider, j'ai suivi vos conseils et semble que la qualité est la même que celle de l'original! :)
orange

Pour certains fichiers mkv, cela échouera avec (impossible d'écrire l'en-tête du fichier de sortie ... codec incorrect). Utilisez ffprobe -i fichier.mkv pour voir dans quel format se trouve l'a / v. Vous devrez probablement recoder à l'aide de la vidéo x264 et de l'audio aac /
ac3

u 100% sûr que le réemballage des fichiers ne provoque pas de perte de qualité ??
PrimitiveNom

1
@BallpointBen Pas possible, non: github.com/HandBrake/HandBrake/issues/…
slhck

1
@Hashim j'ai essayé de clarifier le post comme demandé. Et en ce qui concerne votre question, étant donné que Handbrake ne permet pas passthrough, conversion de MP4 en MKV va introduire une perte de qualité. Et ça va prendre beaucoup de temps. Faites juste ffmpeg -i input.mp4 -c copy output.mkvet ça devrait aller.
Slhck le

4

Cela fonctionne très bien pour moi. Voici le code pour convertir tous les fichiers .mkv en fichiers .mp4 dans Windows.

  • Vous devrez peut-être ajouter ffmpeg à votre chemin. vous pouvez simplement mettre le chemin complet de l'exécutable ffmpeg, D: \ apps \ ffmpeg \ bin \ ffmpeg.exe
  • Téléchargez ffmpeg pour Windows ici.
  • Utilisation: Déposez un fichier .mkv dessus. Cela fera tout le répertoire.

Enregistrez dans un fichier appelé convert.bat.

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause

Fonctionne comme un charme.
Kit Johnson

Je mets cela dans le dossier avec ffmpeg.exe et ensuite changéfor %%a in ("*.mkv") do %~dp0ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
davidtbernal
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.