Zum Inhalt springen
en

MKV am Mac abspielen, ohne die Datei neu zu kodieren

Eine MKV enthält oft Video, das der Mac längst versteht. Umverpacken dauerte im Test 0,5 bis 1,4 Sekunden. Die Befehle, die Falle bei HEVC und wie Kinora damit umgeht.

3. Nov. 2026 · T. Krause · 8 Min. Lesezeit

Eine MKV spielst du am Mac am schnellsten ab, indem du ihren Inhalt mit ffmpeg unverändert in eine MP4 umpackst: ffmpeg -i film.mkv -c copy film.mp4. Bei HEVC-Video kommt -tag:v hvc1 dazu. Bild und Ton bleiben dabei Bit für Bit gleich, und die Qualität leidet nicht. Eine fünfminütige Testdatei mit 587 MB war im Test nach 0,5 bis 1,4 Sekunden fertig. Unter macOS 27.2 klappt es so mit Ton in AAC, AC-3, E-AC-3, ALAC, FLAC und Opus. Ob ältere Versionen FLAC und Opus in einer MP4 abspielen, habe ich nicht getestet. MP3-, MP2-, DTS-, Vorbis- und TrueHD-Ton musst du mit -c:a aac umwandeln, und Surround braucht noch eine Angabe mehr.

Das klappt, weil meist nur die Verpackung stört. MKV ist ein Container, also das Dateiformat um die Video- und Tonspur herum. AVFoundation, Apples Medien-Framework, lehnte unter macOS 27.2 jede getestete MKV ab, auch eine mit H.264 und AAC. Dieselben Spuren in einer MP4 liefen sofort.

Erst nachsehen, was in der Datei steckt

ffprobe gehört zu ffmpeg und zeigt die Spuren an:

ffprobe -v error -show_entries stream=codec_type,codec_name -of csv=p=0 film.mkv

Die Ausgabe sieht zum Beispiel so aus:

h264,video
aac,audio

Danach entscheidest du, welchen Befehl du brauchst.

H.264-Video. Der Befehl vom Anfang reicht bei Ton in AAC, AC-3, E-AC-3 oder ALAC, unter macOS 27.2 auch bei FLAC oder Opus.

HEVC-Video. Hier liegt die eigentliche Falle. Ohne weitere Angabe schrieb ffmpeg die Spur mit der Kennung hev1 in die MP4 und beendete sich ohne Fehler. AVFoundation meldete die Videospur trotzdem als nicht abspielbar. Mit der Kennung hvc1 nahm es dieselbe Spur an:

ffmpeg -i film.mkv -c copy -tag:v hvc1 film.mp4

Apples Spezifikation für HLS-Streaming empfiehlt ebenfalls hvc1 statt hev1. Sie ist für Streaming geschrieben, und ob deine Datei läuft, zeigt ein Doppelklick am eigenen Mac.

MP3, MP2, DTS oder Vorbis als Ton. Dieser Fehler meldet sich nirgends. ffmpeg beendet sich mit Status 0, und ffprobe zeigt die Tonspur in der MP4 weiterhin an. AVFoundation führt aber nur die Videospur auf und meldet die Datei als abspielbar. Auch AVPlayer spielte so eine Datei nur mit Videospur ab. Angehört habe ich das nicht. Dass sie stumm bleibt, schließe ich daraus, dass es keine Tonspur zum Abspielen gibt. Mit 44,1 und 48 kHz war das Ergebnis gleich. AAC, AC-3, E-AC-3, ALAC, FLAC und Opus behielten ihre Spur, und AVFoundation konnte alle sechs dekodieren. TrueHD ist ein eigener Fall. Ohne -strict -2 bricht ffmpeg mit Status 88 ab, und mit dieser Angabe führt AVFoundation die Spur zwar auf, meldet sie aber als nicht abspielbar. Für die vier verschwundenen Formate und TrueHD kopierst du das Video und wandelst nur den Ton um:

ffmpeg -i film.mkv -c:v copy -c:a aac film.mp4

Danach hatte die MP4 im Test eine abspielbare AAC-Spur. Bei HEVC gehört -tag:v hvc1 mit in diesen Befehl. Willst du das MP3 unverändert behalten, schreibst du H.264 mit -c copy in eine film.mov. Dort führte AVFoundation die MP3-Spur auf und konnte sie dekodieren.

Surround. Bei 5.1-Ton in DTS, TrueHD oder FLAC endet dieser Befehl mit Status 0, und der Ton fehlt trotzdem. Alle drei dekodieren zum Layout 5.1(side). Der AAC-Encoder von ffmpeg schreibt es mit einem Program Config Element, und AVFoundation führte für das Ergebnis keine Tonspur auf. Verlange ein Layout, das der Encoder ohne dieses Element schreibt:

ffmpeg -i film.mkv -c:v copy -c:a aac -af "aformat=channel_layouts=7.1|5.1|5.0|4.0|3.0|stereo|mono" film.mp4

Danach hatten dieselben drei Dateien eine abspielbare AAC-Spur in 5.1.

VP9-Video. Umpacken hilft hier nicht. Eine MP4 mit VP9-Video entstand zwar ohne Fehlermeldung, AVFoundation meldete aber nur die Tonspur als abspielbar. Solches Video musst du neu kodieren.

Ein Status 0 von ffmpeg sagt also nur, dass die Datei geschrieben wurde. Ähnlich schweigsam ist mv -n beim Umbenennen.

Auch bei Untertiteln und weiteren Sprachen lohnt ein Blick ins Ergebnis. Im Test übernahm ffmpeg ohne weitere Angaben eine Video- und eine Tonspur und ließ eine SRT-Spur wortlos weg. Mit -map 0, das alle Spuren mitnehmen soll, brach es dagegen ab, weil es SRT nicht in die MP4 schreiben konnte.

So geht Kinora vor

Kinora ist unser Videoplayer für den Mac, gebaut für stufenloses Tempo und ein Spektrogramm, das mit dem Abspielkopf läuft. Weil die App den Ton vorab analysiert, zeigt das Spektrogramm auch, was gleich kommt. ffmpeg bringt die App nicht mit, sie nutzt ein installiertes. Den Ablauf habe ich in MediaPreparer.swift nachgelesen.

Zuerst fragt Kinora AVFoundation nach der Datei und nach jeder Spur, die AVFoundation aufführt. Meldet es eine Tonspur als nicht abspielbar, gilt die ganze Datei als nicht abspielbar. Führt es gar keinen Ton auf, liest ffprobe bis zu 256 Pakete jeder Tonspur und zählt, wie viele sich dekodieren lassen. Hat eine Spur Ton, geht die Datei in die Umwandlung. Alles andere öffnet sich direkt, ohne dass ffmpeg startet.

Sonst liest ffprobe die Codecs aus, und Kinora entscheidet Bild und Ton getrennt.

Beim Bild kopiert Kinora H.264 und HEVC, HEVC mit der Kennung hvc1. Das gilt auch für anderes Video, das AVFoundation in der Quelldatei schon abspielt, zum Beispiel MPEG-4 in einer MP4. Alles andere geht durch den Hardware-Encoder h264_videotoolbox, oder in Software durch libx264, wenn der Hardware-Encoder scheitert oder sein Ergebnis nicht läuft.

Beim Ton nimmt Kinora die erste Tonspur, die wirklich Ton enthält. Eine Spur ohne Pakete überspringt es, ebenso eine, bei der sich weniger als jedes dritte Paket dekodieren lässt. AAC, ALAC, AC-3 und E-AC-3 werden kopiert. Alles andere wird zu AAC mit 192 kbit/s, bei Surround mit der Layout-Liste von oben.

Nach jedem Versuch fragt Kinora AVFoundation nach dem Ergebnis. Fehlt der Ton, ändert sich nur der Ton: Aus der Kopie wird AAC, aus Surround-AAC wird Stereo, dann kommt die nächste Spur und zuletzt das Bild allein. Scheitert das Bild, ändert sich nur der Video-Schritt. Beim neuen Versuch für den Ton bleibt kopiertes Video kopiert, neu kodiert wird dann nur der Ton. Video, das kodiert werden muss, läuft bei jedem Versuch wieder durch den Encoder, weil Kinora den ersten Durchlauf nicht behält. MPEG-4, VP9 oder AV1 in einer MKV mit AAC, das beim Kopieren verloren geht, braucht also zwei Kodierungen. Ein Video ganz ohne Ton besteht die Prüfung. Für ein eigenes Skript würde ich diese Prüfung übernehmen.

Scheitern alle Spuren, läuft das Bild mit einer Zeile darüber: "No sound: Kinora can't decode this file's audio." Eine Spur ohne Pakete zählt nicht als Ton. So eine Datei läuft ohne diese Zeile, und im Spektrogramm-Bereich steht "No audio track". Gibt es gar nichts abzuspielen, meldet Kinora, dass sich die Datei nicht umwandeln ließ.

Eine H.264-MKV, eine HEVC-MKV und eine MPEG-4-AVI mit gesprochenem Text in MP3 habe ich durch die App laufen lassen, mit einem Messpunkt am Audioausgang des Players. Bei allen dreien kam der Ton dort mit Spitzen von -2,3 dBFS an. MKVs mit DTS und TrueHD in 5.1 und einem Testton kamen auf -18 dBFS. Der Messpunkt ersetzt die Samples durch Stille, angehört habe ich sie also auch diesmal nicht. Ein Video ohne Ton lief weiter, und wo sonst das Spektrogramm ist, stand "No audio track".

Opus und FLAC in einer MP4 nahm AVFoundation unter macOS 27.2 auch ohne Umwandlung an. Kinora wandelt beide trotzdem um, was den Ton eine Kodierung mehr kostet, und FLAC ist danach nicht mehr verlustfrei. Die App läuft ab macOS 14, und ich habe nur diese eine Version getestet. Ob ältere Systeme die beiden in MP4 abspielen, weiß ich nicht.

Mit Kinoras Encoder-Einstellungen dauerte das Kopieren einer generierten Testdatei (1080p, fünf Minuten) auf einem M3 Pro 0,5 bis 1,4 Sekunden. Video kopieren und MP3-Ton zu AAC wandeln brauchte bei einer zweiten, gleich langen Datei 3,5 bis 3,7 Sekunden. Der Hardware-Encoder brauchte rund 42 Sekunden, der Software-Encoder 28 bis 40. Beide Läufe wandeln auch den Ton in AAC mit 192 kbit/s um. Der Ton der Testdatei ist schon AAC, das Kinora selbst kopieren würde, und mit kopiertem Ton waren beide Dateien nur 0,26 MB kleiner. Dass die Hardware hier langsamer war, hat mich überrascht. Der Mac war dabei mit anderer Arbeit beschäftigt, und ein Testbild ist kein Spielfilm, ich würde daraus also keine Regel machen. Der Abstand zwischen Kopieren und Kodieren ist das Ergebnis, das zählt.

Womit du leben musst

Ton in MP3, DTS und den anderen Formaten außerhalb der Kopierliste wird neu zu AAC kodiert, was eine Generation Qualität kostet. Das gilt auch für eine MP4 mit MP3-Ton, die vor dem Abspielen durch die Umwandlung läuft. Die Rate bleibt bei Surround bei 192 kbit/s, 5.1 bekommt also pro Kanal deutlich weniger als Stereo.

Beschädigter Ton kann laut werden. Eine MP3 mit 5 % überschriebenen Bytes kam nach einer einfachen AAC-Kodierung auf +89,7 dBFS. Kinora setzt bei jeder AAC-Kodierung einen Limiter auf Vollaussteuerung, und dieselbe Datei kam damit auf +1,6 dBFS. Der Schaden bleibt als Rauschen hörbar. Unterhalb der Vollaussteuerung änderte der Limiter im Test nichts, und kopierter Ton läuft nicht durch ihn.

Kinora übernimmt die erste Videospur und eine Tonspur. Bei einem Film mit mehreren Sprachen hörst du die, die zuerst in der Datei steht und Ton enthält, und eingebettete Untertitel fallen weg. Eine .srt-Datei mit gleichem Namen neben dem Video lädt Kinora trotzdem.

Während der Umwandlung läuft noch kein Film. Kinora zeigt einen Prozentwert und startet, wenn ffmpeg fertig ist. Bei einem langen Film, der neu kodiert werden muss, wartest du also. Die temporäre MP4 kann ungefähr so groß werden wie das Original. Sie verschwindet, wenn du das Fenster schließt, sonst beim nächsten Start. Schließt du das Fenster während der Umwandlung, verschwindet auch die halbfertige Datei.

Ohne ffmpeg öffnen sich solche Dateien gar nicht, und Kinora nennt dir den Befehl brew install ffmpeg. Gesucht wird in vier festen Ordnern, in /opt/homebrew/bin, /usr/local/bin, /opt/local/bin und /usr/bin. Eine MP4 mit Ton, den AVFoundation nicht aufführt, bekommt denselben Hinweis, wenn ffprobe da ist und den Ton bemerkt. Das ffmpeg-Paket von Homebrew installiert beide. Fehlt auch ffprobe, merkt Kinora nicht, dass da Ton wäre. Das Bild läuft dann ohne Ton, und im Spektrogramm-Bereich steht "No audio track".

Führt AVFoundation eine Tonspur als abspielbar auf, verlässt sich Kinora darauf. Im Test führte es durchgehend beschädigtes AAC in einer MP4 auf und dekodierte daraus kein einziges Sample. Diese Datei öffnet sich also direkt und ohne die Zeile "No sound".

Installiere ffmpeg, lade die Demo von der Kinora-Seite und öffne eine MKV, die du ohnehin herumliegen hast. Die Demo kann alles und schließt sich nach fünf Minuten. Hinweise zur Installation stehen auf der Support-Seite. Kinora braucht macOS 14 oder neuer auf Apple Silicon.

Alle Artikel

Cookies

Diese Seite funktioniert ohne Cookies. Mit deiner Einwilligung lädt sie Google Analytics, um Besuche zu zählen.

Datenschutzerklärung