ffmpeg: MKV zu MP4 verlustfrei konvertieren

41178
Striky

Ich bin neu bei ffmpeg (Windows) und brauche Hilfe. Ich möchte meine MKVs mit möglichst geringem Qualitätsverlust in MP4 umwandeln. Die MKVs werden mit makemkv erstellt und enthalten ua DTS-Soundtrack. Sie sind verlustfrei. Der Grund, warum ich konvertieren möchte, ist, dass ich es auf iPads und Apple TV streamen möchte. iPads unterstützen keine DTS und MKVs. Die MKVs sind sowohl DVDs als auch BR. Die MKVs enthalten Videos, Soundtracks und Untertitel.

Ich habe dies versucht, bekomme aber aufgrund von DTS-Soundtrack keinen Ton: ffmpeg -i input.mkv -c: v copy -c: eine Kopie output.mp4

Kann mir jemand helfen?

Welche Codecs sollte ich verwenden? MP4 ist das Beste für Apfel?

8
Gibt es bestimmte iPad- und Apple TV-Versionen, auf die Sie abzielen, oder möchten Sie alle unterstützen? LordNeckbeard vor 9 Jahren 1
Hinweis: MP4 ist kein Codec. Es ist nur ein Dateiformat (ein "Container"). slhck vor 9 Jahren 1
Ich habe den neuesten iPod Air. Ich habe das neueste Apple TV. Ich weiß, dass MP4 ein Container und kein Codec ist :) Striky vor 9 Jahren 0
Bitte geben Sie einige Informationen zu einer Ihrer typischen Eingaben an. Die vollständige Konsolenausgabe von "ffmpeg -i input.mkv" reicht aus. LordNeckbeard vor 9 Jahren 0
Ich habe versucht, ffmpeg -i input.mkv -c: v copy -c: eine Kopie output.mp4 Dies wurde zwar gespielt, aber es wurde kein Ton ausgegeben, da Apple kein DTS spielt. Habe auch ffmpeg -i input.mkv -strict experimentell ausprobiert -c: v copy -c: a aac -b: a 192k -q: a 6 output.mp4, aber der Film (sowohl Video als auch Ton) lief nicht glatt auf meinem iPad Air (sowohl Stream als auch heruntergeladen). Striky vor 9 Jahren 0
Ich werde in der Lage sein, eine ausführlichere Antwort zu geben, wenn Sie Informationen zu Ihrer Eingabe und zu Ihrem ffmpeg-Build anzeigen. LordNeckbeard vor 9 Jahren 0

1 Antwort auf die Frage

16
jornane

MP4 ist in der Tat das beste Format für Apple-Geräte und -Software. DTS wird in der Tat auch nicht unterstützt, viele MP4-Videodateien enthalten zwei Audiospuren, eine DTS und eine AAC.

Es stehen mehrere Encoder zur Verfügung, die alle im ffmpeg-Wiki dokumentiert sind . Welcher Codec verfügbar ist, hängt davon ab, wie ffmpeg kompiliert wurde. libfdk_aac liefert die besten Ergebnisse. Da dieser Codec jedoch nicht frei ist, ist er nicht immer verfügbar.

Dinge, die Sie probieren können (ich ordne sie zuerst in der Reihenfolge meiner wahrgenommenen Qualität an)

ffmpeg -i input.mkv -c:v copy -c:a libfdk_aac -b:a 128k output.mp4 ffmpeg -i input.mkv -strict experimental -c:v copy -c:a aac -b:a 192k output.mp4 ffmpeg -i input.mkv -c:v copy -c:a libfaac -b:a 192k output.mp4 

Wenn Sie auch die DTS-Spur beibehalten möchten, verwenden Sie das -mapFlag.

Nicht direkt für OP, aber der OS X-Programm- Subler macht diesen Vorgang sehr einfach.

EDIT: Kommentare tl; dr? Das Problem mit dem folgenden Befehl wurde behoben

ffmpeg -i input.mkv -strict experimental -map 0:0 -map 0:1 -map 0:2 -map 0:3 -c:v copy -c:a aac -b:a 384 -c:s copy output.mp4 

TIPP: Wenn -c:s copyUntertitel nicht funktionieren, versuchen Sie es -c:s mov_text.
Hat mich mehrfach gerettet.

Ich denke nicht, dass der VBR-Modus des internen AAC-Encoders wie beabsichtigt funktioniert. Beim letzten Mal war es kaputt. Gehen Sie besser mit CBR und verwenden Sie VBR für die anderen Encoder (`libfdk` und` libfaac`) slhck vor 9 Jahren 0
Ich habe auch gelesen, dass libfdk_aac das beste Ergebnis liefert. Ich habe die statische 32-Bit-Version für Windows heruntergeladen (git-9722a6a (2014-05-24)). Wie kann ich überprüfen, ob ich den libfdk-Codec habe? Edit: Ich bekomme einen unbekannten Encoder 'libfdk_aac'. Wo kann ich es herunterladen oder gibt es einen fast ebenso guten Audio-Codec? Striky vor 9 Jahren 0
Habe sowohl ffmpeg -i input.mkv -c: v copy -c: a libfdk_aac -b: a 128k output.mp4 als auch ffmpeg -i input.mkv -c: v copy -c: a libfaac -b: a 192k ausgegeben .mp4 No go :( Striky vor 9 Jahren 0
@Striky "No go :(" Ich habe den letzten Befehl mit einem frischen ffmpeg von Homebrew ausprobiert, funktioniert für mich. Kannst du mehr Details darüber angeben, warum es für dich nicht funktioniert? jornane vor 9 Jahren 0
@slhck: Ich habe gerade die "-c: a aac -q: a 6" -Einstellungen ausprobiert und das Ergebnis mit "-c: a libfaac -b: a 192k" verglichen, meiner Meinung nach gibt der ** aac ** -Codec besser ab Ergebnisse als ** libfaac **, aber da sich die Codecs in der Entwicklung befinden, kann sich dies ändern. ** libfdk_aac ** wird wahrscheinlich noch bessere Ergebnisse liefern, aber ich habe es momentan nicht verfügbar. jornane vor 9 Jahren 0
Der Vergleich von VBR und CBR mit verschiedenen Codecs führt nicht zu sinnvollen Ergebnissen, aber der Qualitätsbereich des `aac`-Encoders ist nicht einmal dokumentiert. Daher ist es sicherer, ihn mit CBR zu verwenden. slhck vor 9 Jahren 0
Du hast recht, das war ein bisschen naiv von mir. Ich wurde mit -c: a aac -b: a 192k neu codiert, aber das hat meine Meinung nicht geändert; Ich denke immer noch, dass der experimentelle ** aac ** -Codec bessere Ergebnisse als ** libfaac ** liefert. Ich habe meine Antwort geändert, um eine CBR für aac zu verwenden. Beachten Sie jedoch, dass libfaac CBR nicht unterstützt, sondern eine ABR enthält, wenn Sie die Bitrate definieren. jornane vor 9 Jahren 0
@ffmpeg -i input.mkv -strict experimentell -c: v copy -c: a aac -b: a 192k -q: a 6 output.mp4 hat funktioniert, aber auf meinem iPad Air konnte ich nicht gut spielen. Weiß nicht warum, wenn Codecs nicht von Apple unterstützt werden? Ich brauche auch alle Soundtracks und Untertitel, wenn das möglich ist. Striky vor 9 Jahren 0
"spielte nicht gut", was ist das Problem? Apple hat einige Einschränkungen, aber der aac-Codec sollte in Ordnung sein. Alle Soundtracks sind kein Problem, schauen Sie sich nur das `-map`-Argument an. Die Antwort enthält einen Link. jornane vor 9 Jahren 0
Der Film "stotterte" (ist das richtige Wort?), Sowohl Ton als auch Bild. Es war nicht glatt. Ich habe es auf das iPad heruntergeladen und auch gestreamt. Als ich zuerst den v-Codec und einen Codec kopierte (nur Container in mp4 geändert), erhielt ich glattes Video, aber keinen Ton (da Apple kein DTS spielt). Übrigens, jetzt auf den Link -map geklickt. Danke dafür :) Und wofür steht -q: eine 6? Striky vor 9 Jahren 0
Ich habe einen Befehl gefunden, der für mich funktioniert. Ich werde weiter daran arbeiten. ffmpeg -i input.mkv -strict experimental -map 0: 0 -map 0: 1 -map 0: 2 -map 0: 3 -c: v copy -c: a aac -b: a 384 -c: s Kopierausgabe .mp4. (Video, 2 Soundtracks und 1 Untertitel haben). Danke für Ihre Hilfe. Striky vor 9 Jahren 0
Schön zu hören, dass es funktioniert! Ich habe einige Tests mit verschiedenen Befehlen durchgeführt. Sowohl Ihr Befehl als auch meine Befehle funktionieren für mich (auf iPad 3 versucht), aber Ihre Eingabedatei unterscheidet sich möglicherweise in gewisser Weise. "-q: Eine 6" bedeutet Audioqualität 6, die Skala ist codec-abhängig (und für "aac" undefiniert). jornane vor 9 Jahren 0
@Striky Bist du sicher, dass du nicht -b: a 384k meinst? Jason R. Coombs vor 9 Jahren 0