Shadowplay Videos bearbeiten ohne weiteres codieren möglich ?

Bullz

Lt. Commander
Registriert
Okt. 2008
Beiträge
2.039
hi,

ich brauche weder die beste erreichbare Qualität, noch aufwendige Videobearbeitung. Das einzige

was ich möchte ist Kleine Dateigrößen, Schnelligkeit und Unkompliziertheit.

Herausschneiden einiger Szenen. Eventuell Einblenden von Infoboxen. Auto Kommentare hinzufügen.
Dergleichen ...

Geforce -> ( verlustbehaftet ) -> Ganze Videoszene am Pc -> ( ohne Verluste oder Transocdieren ) -> Fertige bearbeitet Video am Rechner

In VirtualDub hies das damals glaub ich "Direct Steam copy für Video/Audio". Das war dann auch in Sekundenschnelle fertig.
 
Du kannst solche MPEG-Videos an Keyframes ohne Qualitätsverlust und Neu-Encodierung schneiden bzw. wenn du zwischen zwei Keyframes etwas schneidest, reicht es zumindest in der Theorie aus, nur die Frames bis zum nächsten Keyframe neu zu encodieren (nennt sich oft "smart encoding"). Dafür kann ich jetzt aber kein spezielles Programm nennen.

Du kannst aber definitiv nicht das Videobild selbst ohne Neu-Encodierung verändern. Wenn du eine Infobox oder Untertitel direkt ins Video einfügst, muss zumindest diese Stelle des Videos wieder neu encodiert werden.

Du kannst aber mit ShadowPlay in einer sehr hohen Bitrate aufnehmen und dann hält sich der Qualitätsverlust in Grenzen.
 
Geht weniger um die Qualität als um die Zeit. Das ganze encoding dauerte immer ewig und man merkte eine sichtbaren Qualitätsunterschied. Es wurde alles " schwammiger "

Hat sich das heute geändert ? ...
Ergänzung ()

Habe entwas interessantes gefunden:
http://www.masterlevel.de/blog/mp4-schneiden-ohne-neuberechnung-oder-qualitaetsverlust/

Genau das meinte ich :)

Könnte ich bei der Methode Probleme mit dem Sound und den Übergängen haben ? Wenn ja was könnte ich dagegen tun ?
 
Für das komplett verlustlose Schneiden gilt auch bei der Verwendung von Avidemux genau das, was 'anyone23' da oben geschrieben hat: man kann NUR an Keyframes schneiden! Eine schöne Erklärung dazu, was Keyframes sind, ist hier zu finden.

Fazit: Frame-exaktes(!!!) Schneiden ist bei hocheffektiven Kompressionsformaten wie XviD, H.264 & Co. auf die Art nicht möglich. Um bei solchen Formaten wirklich Frame-genau schneiden zu können, muss entweder das komplette Video neu codiert werden, oder zumindest der kurze Abschnitt bis zum nächsten Keyframe. Diese Problematik hatte ich vor einigen Jahren hier schonmal für XviD/DivX beschrieben - und sie gilt in genau der selben Form auch für alle modernen Kompressionsformate wie H.264, HEVC und VP9:
Tom Keller schrieb:
Tom Keller schrieb:
Allllssssssooooooooo....
Man kann beim verlustlosen Schneiden von Videos (und das betrifft ALLE Videoformate) nur bis zu einem Keyframes schneiden. Warum das so ist, kann man bei Brother John's Encodingwissen nachlesen. Ist auch ganz logisch: Keyframes = I-Frames (Intraframes). Sie enthalten den kompletten (!) Bildinhalt... komprimiert ähnlich wie JPEG Bilder. P-Frames und B-Frames hingegen enthalten nur Bildunterschiede und nicht den gesamten Bildinhalt. Ein Schnitt kann also nicht bis (sagen wir mal) zu einem P-Frame gehen - damit würde man dem P-Frame ja das vorhergehende Frame "wegnehmen" auf das es sich bezieht. Die Folge wären grausame Bildfehler, die sich weiter verschlimmern würden, bis das nächste Keyframe kommt (das ja wieder das komplette Bild enthält). Sowas kennt jeder, der schonmal eine defekte AVI hatte (da gibt's dann an der defekten Stelle "lustige" Schlieren, verzogene Farben und Formen usw.). Darum erlaubt VirtualDub kein beliebiges Schneiden bei eingestellter "Direct stream copy". Klar soweit (?)...

Das Problem bei der Sache ist: XviD oder DivX setzen die Keyframes nach Bedarf. Meist bei Szenenwechseln (da dort die größten Unterschiede zum vorhergehenden Frame sind) - im Codec selbst kann man aber meist noch einstellen, nach wievielen Frames maximal wieder ein Keyframe kommen soll. Bei XviD nennt sich das "Maximum I-Frame Intervall" und steht standardmäßig auf 300. Das heißt: wenn der Codec 300 Frames lang keinen Grund sah ein Keyframe zu setzen, wird trotzdem eins gesetzt. Ergo: es kann schonmal etwas "dauern", bis das nächste Keyframe kommt.

Um doch beliebig schneiden zu können, müßte man entweder den kompletten Film reencoden (= zeitaufwändig + Qualitätsverlust) oder halt nur ein Stück Film bis zum nächsten Keyframe encoden und das einfügen.


Und da der Mensch ein sehr visuell veranlagtes Wesen ist :rolleyes:: - mal ein Beispiel...

Angenommen, das ist ein Film (die verschiedenen Framearten bitte bei Brother John nachlesen):
bild1tkun0.gif


Und von diesem Film will ich per "Direct stream copy" das hier rausschneiden:
bild2fkuox.gif

Wer die Erklärung durchgelesen hat, weiß aber: DAS GEHT NICHT! Der Schnitt würde mitten zwischen zwei P-Frames gehen - und sowas ist nicht zulässig.

Es ginge nur das:
bild3pmuq8.gif


... oder alternativ das :
bild4b7uew.gif


Jetzt will ich aber unbedingt das Stück im oberen Beispiel rausschneiden. Und dafür gibt's nur zwei Möglichkeiten:
  1. Ich schneide in VirtualDub - stelle aber nicht auf "Direct stream copy", sondern encode den kompletten Film neu. So werden die Keyframes beim Encoden neu gesetzt. Nachteil: Qualitätsverlust & Zeitaufwand.
  2. Ich schneide nur ein Stück raus (und zwar so weit wie ich darf) und encode vom Rest (Rest = alle Frames bis zum nächsten Keyframe) nur die Frames, die ich brauche:
    bild5xuusc.gif

    Da hier alles einzelne Schritte sind, ist's allerdings nötig, das Ergebnis manuell zusammenzustückeln. Das heißt: den ersten unveränderten schwarzen Block (bis zum grünen Rahmen) in VirtualDub laden, den neu encodeten blauen Block per "Append AVI segment" dranhängen und den letzten (ebenfalls unveränderten) schwarzen Block per "Append AVI segment" an den Schluß dranhängen.
    Das Problem hierbei: man muß den blauen Block mit exakt den gleichen Einstellungen neu encoden, wie den schwarzen Block. Ansonsten weigert sich VirtualDub die Stücke zusammenzufügen (bei zu starken Abweichungen in der Bitrate), oder es gibt Bildfehler (wenn man Einstellungen wählt, die im Original nicht gewählt waren... wie GMC & Co.).
    Eindeutiger Vorteil des Ganzen: da nur ein Bruchteil des Videos neu encodet wird geht's viel schneller und der restliche Film wird qualitätsmäßig nicht verändert!
Also wie gesagt: es geht so... das beliebige Schneiden einer AVI. Leider gibt's dafür keine automatisierte Lösung. Zumindest nicht bei AVIs. Bei MPEG2-Dateien sieht's da anders aus: das Problem ist grundsätzlich das gleiche. Allerdings gibt's Tools, die das Reencoden dieser notwendigen kleinen Stücke beim Schneiden selbst übernehmen. Beispiele dafür wären: das kostenlose Cuttermaran (welches TMPGEnc oder QuEnc zum Reencoden benutzt) oder das kostenpflichtige MPEG2VCR (welches wohl selbst Encoden kann).

Inzwischen beherrschen neuere VirtualDub-Versionen und auch Tools wie Avidemux ebenfalls solche automatisierten Lösungen für XviD/DivX-AVIs - das nennt sich dann "Smart Rendering" bzw. "Smart copy" (gleiche Funktion... anderer Name). Dabei wird ein Stück reencodet, falls man mitten in eine GOP "reinschneidet".
"Smart Rendering", "Smart Encoding" bzw. "Smart copy" (wie immer man es auch nennen will) für H.264-Videos beherrschen meines Wissens eine handvoll kommerzieller Tools und abseits davon bislang nur ein einziges kostenloses Tools - nämlich: MKV Cutter. Wie der Name es schon andeutet, muss die Quelldatei dafür im Matroska-Container vorliegen (sofern das nicht schon der Fall ist, kann man sie einfach mit MKVMerge in den MKV-Container verpacken und anschließend mit MKV Cutter schneiden).


Für Ein- und Überblendungen gilt das gleiche. Eine Veränderung am Bildinhalt verlangt grundsätzlich ein Reencoding. Theoretisch würde es auch hierbei reichen, nur den veränderten Abschnitt bis zum nächsten (unveränderten) Keyframe neu zu codieren und den Rest unverändert zu übernehmen. Hierfür wüsste ich allerdings spontan kein Tool, was das in einem Rutsch erlaubt.
 
Zuletzt bearbeitet:
fett Thx :) wundert mich da ich vor Jahrne wo ich mich mal kurz mit Videobearbeitung beschäftigt habe nicht mitbekommen habe.

Bin mit I-Frame genauem schneiden zufrieden :). Schade das du keine software kennst die automatisch Inhalte nur in betreffenden I-Frame blocken neu codiert .. das wäre ja sowas wie der heilige Gral der Video Bearbeitung ...
 
Bullz schrieb:
was ich möchte ist Kleine Dateigrößen, Schnelligkeit und Unkompliziertheit.

Und wenn das ins Spiel kommt, dann hilft Dir auch das Wissen der Keyframes nicht. Du willst das Video verändern und dann muss Du es immer neu codieren lassen.
 
Wie oben geschrieben ... theortisch reicht es zwischen den I Frames neu zu codieren ... Das sehe ich ein aber für einen MiniBalken mehrere Minuten Videos zu codieren ... das muss doch im Jahr 2015 schon besser gehen... vor allem wenn es die theortische Grundlange dafür schon gibt.
 
Bullz schrieb:
Schade das du keine software kennst die automatisch Inhalte nur in betreffenden I-Frame blocken neu codiert .. das wäre ja sowas wie der heilige Gral der Video Bearbeitung ...
Ich hab doch geschrieben ;) ...

MKV Cutter kann das hier bei H.264-Videos:

bild5xuusc.gif


... aber eben NUR bei H.264-Videos im MKV-Container. Ist jedoch nicht soooo schlimm: man kann ja ein beliebiges Containerformat in MKV "umcontainern", das Video dann mit MKV Cutter schneiden und es zuletzt wieder ins Ursprungsformat zurück "verpacken" (den Container zu ändern ist ja schließlich verlustlos).


Bullz schrieb:
das muss doch im Jahr 2015 schon besser gehen... vor allem wenn es die theortische Grundlange dafür schon gibt.
Mit zunehmender Komplexität der Kompressionsformate wird das aber immer schwieriger. H.264 kennt z.B. nicht nur "normale" I-Frames, sondern auch eine "Spezialform": IDR-Frames. Der Unterschied ist hier beschrieben. Als Konsequenz der Technik ist ein Schneiden an normalen I-Frames NICHT mehr erlaubt, sondern nur noch an IDR-Frames. Eine Schnittsoftware muss also dazu in der Lage sein, das Video zu analysieren und I- von IDR-Frames zu unterscheiden. Zudem muss auch die restliche Struktur des Videos analysiert werden, damit der neu zu codierende Datenblock mit exakt den selben Einstellungen wie das Original erstellt wird - ansonsten kann es beim Abspielen zu Bildfehlern an der Schnittstelle oder sogar zu einem Crash des Decoders/Players kommen.

Damit du mal siehst, wie viel Aufwand da nötig ist - hier kannst du dir die Entstehung von MKV Cutter ansehen:

http://forum.gleitz.info/showthread.php?45451-H-264-frame-genauer-Schnitt-von-mkv(h-264)-Dateien
 
Zuletzt bearbeitet:
Zurück
Oben