schneiden mit virtual dub von avi, funkt nicht

Mach mal ein Screenshot vor und nach dem "entfernen" drücken bei der Auswahl des Clips
 
vorsicht bitte bei der codierung des videos. wenn du ein format ähnlich MPEG1 oder MPEG2 video vorliegen hast, dann wird das wohl nur bedingt erfolgreich enden.

diverse format können nur in den Vollframes geschnitten werden - auch I-Frames genannt. diese gibt es nur 1x alle sekunde oder auch seltener/häufiger je nach ursprünglicher Einstellung bei Erstcodieren. die 24 "Frames" bis zum folgenden I werden hierbei mit P- und B-Frames gefüllt. diese enthalten jedoch nur Informationen darüber, was sich gegenüber dem letzten I-Frame geändert hat.

man kann also nicht an P- und B-Frames schneiden.

IPBBPBBPBBPBBPBBPBBPBBPBBI.... <-- zeigt eine bei MPEG1 häufig verwendete Abfolge, die nur an den I aufgetrennt werden kann!

ein AVI hat ähnlich wie MPEG auch bereiche, die sich nur widerwillig trennen lassen, da hier evtl mit deinterlaced codiert wurde. insofern dein video schon progressive ist, komme ich aber auch sehr schnell ans ende der ferndiagnose!
 
MahatmaPech schrieb:
diverse format können nur in den Vollframes geschnitten werden - auch I-Frames genannt.
Das gilt nicht für "diverse", sondern für ALLE Videokompressionsformate. Und das gilt auch nur für verlustloses Schneiden (bei VirtualDub also wenn "Direct Stream Copy" aktiv ist). Siehe auch:

https://www.computerbase.de/forum/t...2-avi-xvid-ton-asynchron.655953/#post-6865074

Verlustlos komprimierende und unkomprimierte AVI-Videos (sowie Videos in schnitttauglichen Kompressionsformaten wie z.B. MJPEG) bestehen NUR aus I-Frames - lassen sich also in VirtualDub per "Direct Stream Copy" beliebig schneiden.
Hochkomprimierende Videokompressionsformate (wie z.B. XviD/DivX und auch H.264) erzeugen hingegen I-Frames nach Bedarf - können also nicht so einfach beliebig per "Direct Stream Copy" geschnitten werden. VirtualDub wird das IMMER respektieren (denn wenn es das nicht täte, wäre eine defekte Datei die Folge) und den manuell gesetzten Schnittpunkt zum nächstliegenden I-Frame verschieben.

Die einzigen zwei Lösungsmöglichkeiten bei VirtualDub:
  1. Auf "Direct Stream Copy" verzichten und das gesamte Video neu codieren!
  2. "Smart Rendering" aktivieren - dann wird nur das Stück bis zum folgenden I-Frame neu codiert und der Rest per "Direct Stream Copy" durchgereicht. ABER: dafür muss man den selben Codec wie bei der Quelldatei einstellen und ihn identisch zur Quelldatei konfigurieren. Außerdem klappt "Smart Rendering" bei H.264-Video im AVI Container nicht richtig mit VirtualDub (denn H.264-Videos enthalten zwei Arten von I-Frames - siehe hier - die VirtualDub nicht unterscheiden kann).




MahatmaPech schrieb:
ein AVI hat ähnlich wie MPEG auch bereiche, die sich nur widerwillig trennen lassen, da hier evtl mit deinterlaced codiert wurde
Sorry - aber diese Aussage ergibt überhaupt keinen Sinn :confused_alt: . Ob ein Video interlaced oder progressive vorliegt, hat keinen Einfluss auf seine Schnitttauglichkeit.
Und so etwas wie "deinterlaced codieren" gibt es nicht. Entweder wurde ein Video interlaced codiert, oder progressive. "Deinterlacing" bezeichnet hingegen die nachträgliche Wandlung eines interlaced Bildinhalt zu einem progressive Bildinhalt.
 
es ist ein Avi
ich habe bei Video und Audio Direct Stream Copy angehakerlt
ich öffne das Video
ich lösche mit der Entfernen Taste
im Virtual Dub ist dann das Video ohne die Werbung drinnen
ich speichere es mit F 7 ab
ich öffne das abgespeicherte Video
wieder ist die Werbung drinnen die am Anfang vom Film ist
also die ersten 5 Sekunden vor dme Film möchte ich raus schneiden aber das Endergebnis ist trotzdem immer mit Werbung am Anfang
erst wenn ich 50 Frames oder so vom Film mit raus schneide ist das Endergebnis ohne Werbung und es fehlt die erste halbe Sekunde vom Film
 
Vermutlich befindet sich das erste (bzw. zweite) Keyframe erst in dieser halben Sekunde nach Anfang des Films.
Du hast unten die Buttons mit den gelben Schlüsseln. Mit diesen kannst du durch mögliche Schnittpunkte navigieren. An anderen Stellen kann man nicht schneiden, wenn "Direct Stream Copy" ausgewählt ist.
 
die schlüsseln? ich weiß gar nicth wofür die sind
ich schneide es so
da is tein Pfeil nach links, den drücke ich, dann gehe ich vor bis dorthin wo der Schnitt enden soll udn drücken den Pfeil der nach rechts geht
dann drücke ich die Entfernen taste und dann ist der blau markierte Teil raus geschnitten nur beim abspeichern ist der gleiche Avi Teil wie vorher da, eben mit Werbung am Anfang.
 
Ja, das geht aber eben nicht, da du nur an I-Frames schneiden kannst. Und die wählst du mit den Schlüsselbuttons. Für framegenaues Schneiden (also an beliebiger Stelle) muss das Video neu kodiert werden.
 
wie meinst du neu kodiert?
wenn ich es im VD lösche gehts ja aber das abspeichern nicht
was meinst du damit?
und das mit i frames kapier ich nicht
 
Die gesamte Video-Datei besteht aus GOPs, die GOPs wiederum aus den einzelnen Bildern (bei AVIs aus so ca. 30-300). Wenn du die Datei verlustfrei ohne eine erneute Kompression schneiden möchtest, kannst du Bilder in den GOPs nicht voneinander trennen und musst die GOPs so als Ganzes übernehmen.
Offensichtlich geht bei dir die erste GOP vom Anfang der Datei bis in die erste halbe Sekunde des Films. Somit kannst du davor nicht schneiden.
 
warte mal 1 bild besteht aus 30 - 300 gops? und jedes Gop aus bildern? aha
wie schneidet man sonst?
 
Nein, das ganze Video besteht aus GOPs und die GOPs bestehen aus Bildern.
Wenn du mit VirtualDub framegenau (also an beliebiger Stelle) schneiden möchtest, musst du "Direct Stream Copy" durch etwas anderes ersetzen.
 
Ist doch eigentlich gar nicht so schwer zu verstehen - hier ist z.B. gut erklärt, was eine GOP ist:

http://de.wikipedia.org/wiki/Bildergruppe


Außerdem hatte ich hier schon erklärt:

https://www.computerbase.de/forum/t...2-avi-xvid-ton-asynchron.655953/#post-6865074

... welche Schnitte per "Direct Stream Copy" erlaubt sind, und welche nicht:

Tom Keller schrieb:
TomKeller 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".
 
Zuletzt bearbeitet:
was echt nur die 2 x pp gehen nicht? geht nicht wieso das das verstehe ich nicht
 
Na weil sie keinen kompletten Bildinhalt gespeichert haben, sondern Bildinhalte von vorherigen Frames übernehmen. Das wird alles hier erklärt:

http://encodingwissen.de/grundlagen/videokompression/interframe

BrotherJohn schrieb:
Klassisches Beispiel für die Interframe-Kompression sind die Predicted Frames (kurz P-Frames). Stellen wir uns einen Nachrichtensprecher vor, der vor einem statischen Hintergrundbild seinen Text vorliest. Der Großteil dieser Szene bleibt über einen längeren Zeitraum unverändert. Die größte Bewegung geht von den Lippen des Sprechers aus.

Gäbe es nichts anderes als I-Frames, müssten wir in jedem einzelnen Bild immer wieder all die Informationen abspeichern, die sich überhaupt nicht ändern – eine riesige Platzverschwendung. Deswegen speichert ein P-Frame diese Infos nicht mehr, sondern verweist einfach auf das vorangehende Bild. Das war aber noch nicht alles. Schließlich könnte ein Teil des Bildes auch gleich bleiben, sich aber an eine andere Position bewegen. Stellen wir uns ein Auto vor, das von links nach rechts durchs Bild fährt. Auch solche »bewegten Gleichheiten« werden von P-Frames erfasst.

Dementsprechend darfst du einem P-Frame nicht die vorherigen Frames weg nehmen, auf die es sich bezieht. Denn ohne diese vorherigen Frames kann das P-Frame NICHT (fehlerfrei) DECODIERT WERDEN! Und deshalb erlaubt VirtualDub so einen Schnitt nicht - du kannst ihn zwar setzen und siehst ihn auch in der Vorschau... aber beim Abspeichern per "Direct Stream Copy" ignoriert ihn VirtualDub! <- Und genau das passiert bei dir!!!
 
Zurück
Oben