Nehmen wir an, ich habe ein Video von 10 Minuten Länge. Und ich möchte seine Größe reduzieren, indem ich einige Teile mit hoher Bitrate habe, während andere weniger wichtige Teile eine niedrige Bitrate haben können. Dazu würde ich das Original in Segmente schneiden. Die wichtigen so lassen, wie sie sind, während die unwichtigen Teile in eine geringere Qualität transkodiert werden.
Gibt es jetzt ein Video-Container-Format, das diese verschiedenen Teile in einer Datei "zusammenkleben" kann ? Mit guter Unterstützung in Playern spielt der so zuverlässige mplayer das Video ab, als wäre es eine gewöhnliche Datei? Und auf eine standardisierte/annotierte/rückgängig zu machende Weise, sodass ein einfacher CLI-Befehl die Segmente wieder in separate Teile/Dateien entwirren würde?
Ich hatte den Eindruck, Matroska könnte dies über Kapitel tun, wobei jedes meiner Segmente ein Kapitel wäre. (Ich habe es irgendwo gelesen, wo das Zusammenführen von Videos ohne Transcodierung diskutiert wurde). Aber wenn ich die eigentlichen MKV-Dokumente lese, scheinen MKV-Kapitel eher wie ein Textindex zu sein, der auf einen anderen (Video-) Stream einer .mkv-Datei zeigt - und nicht auf eine Art Datenblockindex auf niedriger Ebene, der mir bei meiner Idee helfen würde. mkv sieht also aus wie eine Sackgasse.
Einfaches Bearbeiten oder Zusammenführen (was mit etwas Remuxing verlustfrei möglich ist) würde mir nicht bieten, unterschiedliche Qualitäten in verschiedenen Abschnitten des Videos zu haben - richtig?
Was ich suche, ist eine an den Interessenbereich angepasste Qualität, etwas, das Bildformate wie JPEG2000 für räumliche Bereiche bieten, nur hier im Laufe der Zeit auf Video angewendet.
Irgendwelche Vorschläge oder Ideen?
Die akzeptierte Antwort schlägt vor, die VBR-Funktionen eines Formats wie mp4 zu verwenden. Während dies funktioniert, hinterlassen Sie bitte eine Antwort, wenn Sie einen anderen Weg kennen, um das gewünschte Ergebnis zu erzielen.
Wenn der einzige Unterschied die Bitrate ist, erfüllt jeder Container, der Streams mit variabler Bitrate akzeptiert, Ihre Anforderung, z. B. MP4, MKV usw
Schritt 1 besteht darin, Ihre Segmente, idealerweise mit demselben Encoder, in unterschiedliche Bitraten zu codieren, wobei alle anderen Parameter gleich sind, z. B. über ffmpeg ,
ffmpeg -ss 0 -t 5 -i input.mp4 -b:v 1000k seg1.mp4
ffmpeg -ss 5 -t 7 -i input.mp4 -b:v 3000k seg2.mp4
ffmpeg -ss 12 -i input.mp4 -b:v 500k seg3.mp4
Schritt 2 besteht darin, ffmpeg zu verwenden, um die codierten Segmente im Kopiermodus mit dem concat-Demuxer zu verketten.
Bereiten Sie eine Textdatei vor
file 'seg1.mp4'
file 'seg2.mp4'
file 'seg3.mp4'
und dann
ffmpeg -f concat -i list.txt -c copy joined.mp4
Clips mit unterschiedlichen Eigenschaften, wie Auflösung, können ebenfalls zu einer MP4 zusammengefügt werden, aber die Kompatibilität zwischen Mediaplayern ist zweifelhaft , und ffmpeg wird dies derzeit ohnehin nicht zuverlässig tun.
Advanced Authoring Format (AAF) und einige MXF-Betriebsmuster (OP-2a, 2b, 3a und 3b) sollten Bitraten mischen können. Ich sage "sollte", weil ich im Moment keine gute Möglichkeit zum Testen habe und keine kommerziellen Systeme kenne, die diese MXF-OPs stark nutzen.
Nun, ich kann nicht sagen, dass ich weiß, wie es gemacht werden würde; aber RED (www.red.com), ihr R3D-Videoformat verwendet einen Debayer-Prozess.
Ich besitze eine RED Epic. Es schießt mit bis zu 5K 100 FPS.
Wenn Sie unterwegs sind und das Video beispielsweise auf einem Laptop ansehen möchten, ist der Durchsatz von unkomprimiertem (oder nahezu) beispielsweise 3:1 5K enorm.
RED verwendet also einen Debayer-Prozess; wobei die Pixel grundsätzlich einem Gittermuster zugeordnet werden, in Bezug darauf, wie sie sowohl codiert als auch decodiert werden.
Dadurch entfällt die Notwendigkeit von "Proxy"-Dateien, Dateien, die zur Bearbeitung heruntergestuft werden, weil Ihr System die Datei einfach nicht in Echtzeit abspielen kann.
Der Debayer hat 8 Ebenen. Und der RED-Player (sowie Software, die ihn unterstützt, wie PPro/After Effects, ermöglicht die Wiedergabe mit 100 %, 50 %, 25 %, 12,5 % und so weiter.
Das Einzigartige an RED ist, dass, wenn Ihr Computer dies tut, die Qualität tatsächlich nicht verringert wird, sondern nur die gewünschte x/100-Qualität angezeigt wird.
Vielleicht ist meine Antwort also etwas rückwärts gedacht: Aber im Wesentlichen haben Sie mit RED-Dateien eine 1K-, 2K-, 3K-, 4K-, 5K-Version - alles in einer Datei verpackt.
Hoffe, das hilft vielleicht etwas, auch wenn es keine Antwort auf die eigentliche Frage ist.
isync
isync
Gyan
copyts
. Mit welchem Befehl bekommst du den Fehler?isync
ffmpeg -f concat -i list.txt -c copy joined.mp4
, und die Beispielsegmentbefehle, nur der mittlere wurde in geändert... -i input.mp4 -vcodec copy seg2.mp4
. Getestet mit ffmpeg 2.8.1, mein Ubuntu avconv kennt concat noch nicht.Gyan
-avoid_negative_ts make_zero
, aber Sie werden wahrscheinlich einige Wiederholungen mit dem vorherigen Segment erhalten.isync
make_zero
der Wert für den-avoid_negative_ts
Schalter. Wo sind die Unterlagen dazu?isync
-copyts -start_at_zero
jeder Segmentierung, keine DTS-Warnung mehr bei Concat, aber das Video wurde nicht richtig abgespielt.Gyan
isync
isync