Handbremseinstellungen zum Konvertieren von MKV in MP4 unter Beibehaltung der Originalqualität

44

Ich habe eine Menge MKV-Dateien, die ich in MP4 konvertieren muss, und meine gewählte Software ist Handbrake.

Ich stecke fest, welche Einstellungen für die Konvertierung am besten wären. Ich möchte die volle Qualität behalten. Konvertiere ich nur mit den ursprünglichen Einstellungen und ändere nichts oder gibt es eine bestimmte Sache, die ich ändern muss?

Orange
quelle
Hier ist eine recht detaillierte Anleitung zu den Einstellungen von Handbrake
mattgadient.com/2013/06/12/…
Ich erhalte eine Fehlermeldung für einige Dateien (für MKV zu MP4 und MP4 zu MKV): Die Ausgabedatei Nr. 0 enthält keinen Stream. Hat jemand eine Ahnung was das bedeutet?
PrimitiveNom

Antworten:

85

Was ist das Problem mit der Handbremse?

Wenn Sie Handbrake verwenden, um von einem Containerformat in das andere zu konvertieren (in Ihrem Fall MKV in MP4), codiert Handbrake das Video neu. Siehe auch die entsprechende Funktionsanforderung , die das Passthrough von Videos aktiviert hätte:

Das Hinzufügen von Video-Passthrough ist leider nicht geplant. HandBrake ist als Video-Transcoder konzipiert. Es war nicht dafür ausgelegt, Durchgang zuzulassen.

Jedes Mal, wenn Sie Container mit Handbrake wechseln, wird Ihr Video neu codiert, was bedeutet, dass es a) Zeit braucht und b) Qualitätsverluste verursachen kann.

Muss ich neu codieren? Könnte ich nicht einfach den Container tauschen?

Da Passthrough nicht möglich ist, fragen Sie sich: Muss ich neu codieren? Wenn Sie nur den Container von MKV auf MP4 ändern möchten, müssen Sie normalerweise nichts codieren . Sie müssen nur den "Umbruch" um das Video ändern. Dadurch geht keine Qualität verloren, und der Vorgang wird viel schneller.

Sie können Container einfach mit FFmpeg austauschen - Sie müssen es nur anweisen, um die Video- und Audiostreams zu kopieren:

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

Es gibt auch Tools wie MP4Box, mit denen auch MP4-Container erstellt werden können - dasselbe gilt für MKV mit MKVtoolnix .

Es gibt jedoch eine große Einschränkung: Dies funktioniert nur, wenn die Audio- und Videocodecs im Zielcontainer (MP4) unterstützt werden, was beispielsweise für H.264 / H.265 und AAC der Fall ist, für viele andere jedoch nicht. Außerdem unterscheidet sich die Unterstützung des Untertitelformats für MP4 von MKV und ist tatsächlich stark eingeschränkt, sodass dieser Befehl möglicherweise fehlschlägt.

Wenn dieser Befehl nicht funktioniert und Ihre Eingabe die falschen Codecs für den Ausgabecontainer verwendet, müssen Sie wahrscheinlich neu codieren . In diesem Fall werden die Codecs an den Ausgabecontainer angepasst.

Um zu verstehen, warum dies erforderlich ist, müssen Sie den Unterschied zwischen Videocodecs und Containern kennen . Dies hilft Ihnen zu verstehen, warum das Ändern von Containern funktioniert und warum die Container MP4 und MKV eigentlich wenig mit Video-Codecs zu tun haben.

Warum ist das Neucodieren überhaupt schlecht?

Sie können (normalerweise) nicht die volle Qualität behalten, wenn Sie ein Video codieren, das bereits codiert wurde. Dies liegt daran, dass das Original bereits komprimiert wurde, indem Informationen weggeworfen wurden. Wenn Sie dies erneut tun, kommt es zu einem Generationsverlust .

Häufig möchten Sie Videos neu codieren, wenn sich beispielsweise ihre Abmessungen ändern, oder Sie benötigen eine bestimmte Bitrate, um Ihren Videostream zu komprimieren, oder Ihr Originalvideo verwendet einen Codec, den Sie aus irgendeinem Grund nicht wiedergeben können.

Wenn Sie also Ihr MKV-Video in Handbrake laden und es mit x264 neu codieren, das der H.264-Encoder Handbrake verwendet, speichern Sie es in einem MP4-Container. Sie verlieren an Qualität, egal was passiert, es sei denn, Sie stellen die Bitrate oder ein Qualitätsfaktor so hoch, dass man den Unterschied (wirklich) nicht sieht. Aber dann wird auch die Datei größer.

Im Idealfall würden Sie das Video in ein unkomprimiertes Video konvertieren, wodurch Sie keine Qualitätsverluste erleiden, aber selbst für ein paar Minuten Videomaterial Dateien mit einer Größe von einem Dutzend Gigabyte erhalten.

Okay, aber ich muss wirklich neu codieren!

Wenn Sie wirklich neu codieren müssen, stellen Sie sicher, dass Sie keine durchschnittliche Bitrate festlegen, sondern wählen Sie einen konstanten Ratenfaktor , der so etwas wie "konstante Qualität" ist. Genau wie bei "variabler Bitrate" für MP3: Es wird sichergestellt, dass die Bits für die Videoteile ausgegeben werden, die sie benötigen, und die Gesamtqualität wird verbessert - bei gleicher Dateigröße.

Normale CRF-Werte liegen zwischen 19 und 24, wobei niedriger "besser" bedeutet. Versuchen Sie es also mit einem Ratenfaktor von 19. Stellen Sie außerdem sicher, dass das Profil "Hoch" eingestellt ist, damit der Encoder alle Schnickschnackfunktionen verwenden und die Qualität für eine bestimmte Bitrate optimieren kann.

slhck
quelle
Danke! Anscheinend bist du der Einzige, der sich um diese Frage kümmert und mir hilft. Ich habe deinen Rat befolgt und es scheint, dass die Qualität mit der des Originals übereinstimmt. :)
Orange
Bei einigen mkv-Dateien schlägt dies fehl (Header für Ausgabedatei konnte nicht geschrieben werden ... falscher Codec). Verwenden Sie ffprobe -i file.mkv, um zu sehen, in welchem ​​Format sich der AV befindet. Sie müssen wahrscheinlich mit x264-Video und AAC / AC3-Audio erneut
codieren
u 100% sicher, dass das Umpacken von Dateien keinen Qualitätsverlust verursacht?
PrimitiveNom
1
@BallpointBen Nicht möglich, nein: github.com/HandBrake/HandBrake/issues/…
slhck
1
@Hashim Ich habe versucht, den Beitrag wie gewünscht zu klären. Und in Bezug auf Ihre Frage, da Handbremse Pass - Through nicht erlaubt, von MP4 in MKV konvertieren wird Qualitätsverlust einzuführen. Und es wird viel Zeit in Anspruch nehmen. Tu es einfach ffmpeg -i input.mp4 -c copy output.mkvund es sollte dir gut gehen.
Slhck
4

Das funktioniert bei mir sehr gut. Unten finden Sie Code zum Konvertieren aller MKV- in MP4-Dateien in Windows.

  • Möglicherweise müssen Sie Ihrem Pfad ffmpeg hinzufügen. Sie können einfach den vollständigen Pfad zur ausführbaren Datei ffmpeg angeben: D: \ apps \ ffmpeg \ bin \ ffmpeg.exe
  • Laden Sie ffmpeg für Windows hier herunter.
  • Verwendung: Legen Sie eine .mkv-Datei darauf ab. Es wird das gesamte Verzeichnis tun.

Speichern Sie in einer Datei namens convert.bat.

for %%a in ("*.mkv") do ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
pause
MonkeyMagic
quelle
Klappt wunderbar.
Kit Johnson
Ich habe das mit ffmpeg.exe in den Ordner gelegt und es dann for %%a in ("*.mkv") do %~dp0ffmpeg.exe -i "%%a" -vcodec copy -acodec copy "%%~na .mp4"
davidtbernal