MKV-Datei für das Streaming mit ffmpeg (oder avconv) geeignet machen - wie werden alle Metadaten an den Anfang der Datei verschoben?

1722
Fredrick Brennan

Ich denke, meine Frage ist ziemlich einfach ...

Manchmal lade ich gerne große MKV-Dateien von einem meiner Webserver herunter und spiele sie ab, während sie heruntergeladen werden. Wenn ich dies jedoch für MKV-Dateien mache, die ich transcodiert habe, zeigt die Datei oft, dass sie viel kürzer ist, als sie tatsächlich ist, und wenn sie zu Ende ist, wird sie einfach weiter abgespielt und zeigt eine falsche Zeit an es wird 2: 50/2: 50 angezeigt, aber es spielt weiter, aber wenn ich versuche, mit den Pfeiltasten rückwärts zu suchen, stürzt der Spieler ab oder springt zum Anfang der Datei zurück.

Wie kann ich also alle Metadaten während der Codierung an den Anfang der Datei verschieben, damit der Player weiß, wie lange die Datei ist, ohne das Ganze zu haben? Sie können dies mit dem mp4Format tun, indem Sie verwenden-movflags faststart, aber wie wird das gemacht mkv?

Es tut mir leid, wenn dies bereits an anderer Stelle gefragt und beantwortet wurde. Ich konnte mir keine besseren Keywords vorstellen als ich und die, die ich verwendete, führten zu keinen Ergebnissen.

1

1 Antwort auf die Frage

3
Gyan

Die Matroska-Stiftung bietet ein Werkzeug, mkclean, das eine ähnliche Aufgabe ausführt wie qt-faststart für MOV / MP4.

Syntax:

mkclean in.mkv out.mkv 

Dadurch wird der Cues-Index neu erstellt. Um die ursprünglichen Queues zu behalten,

mkclean --keep-cues in.mkv out.mkv 

FFmpeg kann dies auch mit einiger Vermutung seitens des Benutzers tun .

ffmpeg -i in.mkv -c copy -reserve_index_space 50k out.mkv 

Dabei ist der reserve_index_spaceWert in Byte die für den Index erforderliche Größe. 50kBytes ist die empfohlene Größe für eine Stunde Medien.

Danke vielmals! Bevor ich akzeptiere - was sind die Vor- und Nachteile, wenn man die Queues hält oder nicht? Gehört es zu den Dingen, bei denen ich nichts merken muss, wenn ich fragen muss? :) Fredrick Brennan vor 7 Jahren 0
Das wäre meine Antwort. Es werden die Cues für die Wiedergabe neu generiert. Gyan vor 7 Jahren 1
OK, ich verstehe, der Grund dafür ist, dass die Queues alle am Ende stehen und ich sie an der Spitze brauche. `mkclean` bewegt die Queues. Ohne "--keep-cues" werden die Cues regeneriert, und die aktuellen durch ffmpeg generierten Cues werden beibehalten. Da Cues jedoch keine Kapitel sind, ist dies kein großer Unterschied weniger CPU-Zeit und Festplattenzugriff, als sie neu zu generieren. Danke nochmal für eure Hilfe: D Fredrick Brennan vor 7 Jahren 0