[VirtualDubMod] MPG2 > AVI (Xvid), Ton asynchron

Lord_Alti

Lt. Commander
Registriert
Sep. 2002
Beiträge
1.065
Hallo Leute,
hab nun schon einiges probiert, bin hauptsächlich gescheitert, und hoffe nun ihr könnt mir weiterhelfen.

Ich hab ein paar Sendungen mit meiner Hauppauge WinTV Nexus-S mit dem Originalprogramm Digital TV als MPG2 Datei aufgenommen.
Spiele ich diese Datei nun mit VLC oder ZoomPlayer ab, ist der Ton wunderbar synchron zum Bild.

Nun möchte ich die Sendung gerne in VirtualDubMod beschneiden und als AVI (Xvid) komprimieren.
  1. Dazu hab ich das Video mit VirtualDubMod geöffnet,
  2. Streams > Stream List
  3. Auf Full Processing Mode umgestellt.
  4. MPEG Layer3 mit 128kBit/s, 48kHz, Stereo gewählt.
  5. Dann Video > Filters > Add > Deinterlace
  6. Video > Compression > Xvid > Configure > 1st Pass
  7. File > Save As... > Zur JobListe hinzugefügt
  8. Video > Compression > Xvid > Configure > 2nd Pass (und noch div. Optimierungen)
  9. File > Save As... > Zur JobListe hinzugefügt
Abschließend noch gerendert (und nichts am PC getan).
Das resultierende AVI hat jedoch beim Abspielen eine Verzögerung von über einer halben Sekunde.

Das merkwürdige ist, wenn ich die Datei mit AutoGK umwandle (das ja auch das gleiche VirtualDubMod verwendet), passt der Ton perfekt zum Bild.

Hab ich irgendetwas übersehen, oder falsch gemacht?
Dankbar für jede Hilfe
:rolleyes:


Verwendete Software(versionen):
  • Digital TV v2.19.3.0
  • VLC v0.8.5
  • ZoomPlayer Home MAX v6.00
  • VirtualDubMod v1.5.4.1
  • AutoGKv2.40
 
Hi,

DVB-Streams können schon mal fehlerhaft aufgenommen werden und sollten immer getrennt (demuxt) geschnitten werden.

Zur Fehlerbehebung und trennen (demuxen) verwende ich entweder:
PVAStrumento oder ProjectX.
Zum Schneiden:
Cuttermaran oder MPEG2Schnitt.

Als Ergebnis erhältst du eine fehlerfreie, sauber geschnittene MPEG-2-Datei.

Wenn du diese in eine Xvid umwandeln willst würde ich immer AutoGK verwenden.

Asynchronität tritt immer dann auf wenn: Der DVB Streams ohne demuxen geschnitten wird oder der Stream nicht alle oder vollständige Datei-Infos mit bekommt.
 
Hey, danke schon mal für die schnelle Antwort herja! :)

Mir is AutoGK ja eigentlich eh auch lieber, aber mir fehlen zwei Features die ich bei AutoGK nicht direkt einstellen kann.

Das ist zum ersten die Bitrate, welche ich gerne mit 500 KBit/s fix angeben möchte.
Bei AutoGK kann ich ja nur die endgültige Größe, oder die Qualität in Prozent angeben.
Und zum anderen kann ich keinen Deinterlace Filter auf das Video anwenden, wodurch die Streifen nicht verschwinden.

Zudem kann ich in VDMod gleich noch schneiden, was mir auch sehr entgegen kommt.


Ich glaube auch, dass der Fehler im MPEG2 File liegt, denn wenn ich auf Streams > Report gehe, bekomme ich folgende Ausgabe:
---== Video stream ==---
Source : [Input MPEG file]
Description : MPEG video stream
Length : 00:11:12.880

---== Other stream ==---
Source : [Input MPEG file]
Description : MPEG audio stream (MPEG)
Length : 00:11:13.344

Also eine unterschiedliche Länge für den Audio- und Videostream.

Ich frag mich nur, was AutoGK noch zusätzlich oder anders macht, denn damit funktioniert's ja einwandfrei.
Kann ich das irgendwie rausfinden? Also gibts da vl. ein Tool das ich vorher über das MPEG laufen lassen könnt, dass mir eine saubere Datei gibt?


Sonst werd ich mich an deinen Tools versuchen, was leider sehr aufwändig werden könnte, bei ca. 180 Aufnahmen :(
 
Hi,

wenn du mehr Einstellungen brauchst, als dir in AutoGK zur Verfügung stehen, solltest du Gordian Knot verwenden. Das Programm ist zwar schon etwas alt aber solange du DVDs, MPEGs oder DVBs in Xvid kodieren willst, ist das Programm genau richtig.

Was das Bereinigen, Muxen und Schneiden der DVB-Streams angeht, gibt es sicherlich noch andere Programme, welche das auch gut können, kosten aber leider ein paar Euros.

Mit PVAStrumento und Cuttermaran schneidest du in 1 bis 2 Minuten dein Video, das ist wirklich kein außerordentlicher Aufwand. Diese Zeit braucht man mit jedem anderen Programm auch.
 
Warum verwendest Du VDub Mod? es gibt ein MPEG2 Plugin für das aktuelle Vdub.
 
VirtualDub sollte man eigentlich nicht dafür nehmen - zumindest nicht DIREKT die Aufnahmen da reinladen. Dafür gibt's mehrere Gründe. Einer ist (wie "herja" schon schreibt): das wird meist asynchron werden - wenn nicht von Anfang an, dann ab einem Fehler in der Aufzeichnung. Ein anderer ist: viele Filter von VirtualDub sind immer noch auf den RGB24-Farbraum (24bit) als Input angewiesen - die Aufnahmen kommen aber im YV12-Farbraum (12bit) daher. VirtualDub muss dafür den Farbraum konvertieren... was in einer minimalen Farbverschiebung und einer größeren Datenmenge (durch das künstliche Aufblasen des Informationsumfangs) resultiert.

Obwohl ersteres eventuell noch zu verschmerzen ist, schlägt sich letzteres doch ein wenig auf die Kodiereffizienz nieder. Daher empfehlen sich für's Umwandeln die gleichen Tools, die man auch für die Konvertierung von DVDs zu XviD nehmen kann: AutoGK, StaxRip, MeGUI oder (zur Not) Gordian Knot. Die benutzen zum Filtern AviSynth, wodurch der Farbraum den "ganzen Weg" über unangetastet bleibt.

@Lord_Alti
Ich besitze selbst eine Nexus-S und würde daher folgendes raten:
  1. Benutz nicht das beiliegende Aufzeichnungsprogramm - das ist ziemlicher Mist. Es gibt andere Programme, die DEUTLICH mehr können... siehe hier.
  2. Benutz ProjectX zum Demuxen der Aufnahmen. Das kann nämlich gleich Projektdateien ("Einstellungen" => "Einstellungen" => "Extern") für Mpeg2Schnitt und Cuttermaran erstellen, so dass man beim Schneiden mit einem der Tools nicht ewig warten muss, bis das Video geladen wurde. Gleichzeitig werden Fehler beseitigt und Asynchronitäten korrigiert. Das ist nicht zu unterschätzen, wenn man ein problemloses Ergebnis möchte (wer will schon ein Video, bei dem die Hälfte wegen eines Aufzeichnungsfehlers fehlt?).
  3. Für Einsteiger empfehlenswert (vor dem Umwandeln in XviD): schneiden mit Mpeg2Schnitt/Cuttermaran. Fortgeschrittene können auch mit AviSynth Audio und Video zurechtstutzen.
  4. Für's Umwandeln in XviD kann man eins der oben genannten Frontends (AutoGK, StaxRip, MeGUI, GK) nutzen. Dafür gibt's genug Anleitungen im Netz - ein guter Einstig ist eventuell hier (für StaxRip) bzw. auf der Vorgängerseite (für Gordian Knot) zu finden.

Mich wundert übrigens ein wenig, dass mit AutoGK kein Deinterlacing möglich sein soll. Laut der AutoGK-Page ist zumindest über die versteckten Einstellungen (Strg+F9) das Erzwingen von Deinterlacing möglich. Soweit ich weiß, sollte AutoGK nämlich automatisch deinterlacen, wenn die Quelle als "interlaced" erkannt wird - nur bei Hybrid-Material (wo interlaced mit progressiv gemischt ist) tut es sich wohl etwas schwer.
 
Heya, erstmal vieeelen Dank für die neuen Beiträge.

Ja du hast Recht, AutoGK kann Deinterlacing (hab das gestern übersehen) und es schon erfolgreich verwendet.

Noch bevor ich eure Antworten heute gelesen habe, hab ich noch diverse (von euch empfohlene) Tools ausprobiert:
TS Doctor: Findet keine PIDs im MPG2 Stream. (war unbrauchbar)
mpeg2repair: Kann meine mpg files nicht verarbeiten.
PVAStrumento: Zum Demuxen für die Weiterverarbeitung ok.
VideoReDo: Hat einen "QuickFix" der den (fehlerhaften) Stream korrigiert + Ton sync
Project X: Die erzeugte .m2v und mp2 verursachte einen Error in VDub.

Ich hab ja geschrieben, dass wenn ich es mit AutoGK umwandle der Ton perfekt passt.
Das kommt anscheinend daher, dass bei AutoGK vorher DGMPGDec läuft und den Stream korrigiert und die Tonverschiebung berechnet.
Denn wenn ich nach dem Umwandeln die Frames einzeln durchgehe, sehe ich ab und zu, dass ein Videoframe noch ein zweites mal eingefügt wurde.

Ist das ok, wenn ich mit AutoGK direkt umwandle und dann mit VDubMod den überschüssigen Anfang + Ende wegschneide?
Hab ich dann ein korrektes AVI? Nicht dass ich einen Keyframe oda sowas weg schnippsle. *g*

Oder ist die Methode von dir (Tom Keller) vorzuziehen (demux > mpg Schnitt > autoGK) ?

Nochmals vielen Dank für die wahnsinns Antworten (und die kommenden) :)
 
Das Hauptproblem von DVB-C/DVB-S Aufnahmen ist, das nicht MPEG2 aufgenommen wird, sondern der komplette Trnsportstream. (TS) Der hat halt nicht nur MPEG2 Informationen sondern auch noch andere Streambedingte Infos. Viele Programme haben damit massive Probleme.
 
Das betrifft die Nexus nicht, da sie (hardwarebedingt) schonmal nicht den kompletten Transportstream liefert. Siehe:

http://www.dvbviewer.info/forum/index.php?showtopic=16199

DVB-Software, die mit der Nexus zusammenarbeitet, bietet daher praktisch immer nur zwei Container-Formate zum Aufzeichnen an:
  • das MPG-Format, oder...
  • das proprietäre PVA-Format
Einzige Ausnahme ist VCR.NET, mit dem Aufnahmen als TS möglich sind (allerdings sind dann im Ergebnis weniger Zusatzinformationen enthalten, als bei DVB-Karten die tatsächlich den kompletten Transportstream liefern).


Lord_Alti schrieb:
Ist das ok, wenn ich mit AutoGK direkt umwandle und dann mit VDubMod den überschüssigen Anfang + Ende wegschneide?
Hab ich dann ein korrektes AVI? Nicht dass ich einen Keyframe oda sowas weg schnippsle. *g*
Keyframes kannst du nicht wegschnippeln - und gerade das ist das grundsätzliche Problem beim Schneiden von MPEG-Material (egal ob MPEG2 oder MPEG4). Vor Jahren galt noch das hier:

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".

Obwohl's bei MPEG2-Videos ähnlich abläuft mit dem Reencoding der GOPs, ist das nachträgliche Schneiden auf die gleiche Art bei XviD bzw. DivX wesentlich problematischer. Schuld ist die Verwaltung des AVI-Containers bei Videos mit B-Frames - AVI ist nicht wirklich dafür gemacht und so kann es passieren, dass (obwohl man exakt schneidet und der reencodete Block exakt den Vorgaben entspricht) ab der Schnittstelle Bildsprünge oder Ruckler auftreten. Daher sollte das nachträgliche Schneiden von XviD/DivX eher eine Notlösung sein...
 
Zuletzt bearbeitet:
Joah genau, das mit IBP meinte ich.

Ich habs mit VirtualDubMod probiert, und nach dem Schneiden gabs keine Artefakte, Schlieren, Fehler.
Auch mit VirtualDub gehts, hier hab ich auch das SmartRendering von dem du gesprochen hast.

Da es für mich jetzt keinen Unterschied macht, ob ich zuerst Schneide oder danach,
was ist vorzuziehen?
MPEG2 oder AVI-Schnitt?
 
Avi Schnitt ist immer besser, da Framegenaues schneiden möglich ist, bei MPEG2 bedingt durch den Aufbau nur bei den Keyframes.
 
AVI-Schnitt ist nur dann besser, wenn man in der AVI ein Videokompressionsformat hat, das ausschließlich aus Keyframes besteht (z.B. MJPEG). Ansonsten ist es schlechter.

@Lord_Alti
Wenn du eine XviD- oder DivX-AVI mit VirtualDubMod oder einer alten VirtualDub-Version per "Direct stream copy" schneidest, wird nie ein fehlerhaftes Ergebnis mit Schlieren oder Bildfehlern rauskommen. VirtualDub(Mod) setzt den Schnitt beim Abspeichern nämlich immer automatisch am nächstbesten Keyframe, wenn du ihn an einer unerlaubten Stelle gesetzt hat.
Dass das so ist, sieht man an einigen Threads hier im Forum, wo Leute aus so einer AVI die Werbung rausschneiden wollen: die wundern sich dann nämlich, dass sie die Werbung in VD komplett entfernen, aber nach dem Abspeichern per "Direct stream copy" noch ein Stück davon im Ergebnis drin haben (z.B. hier oder auch hier)! Das liegt dann daran, dass sie an einer Stelle geschnitten haben, die VirtualDub bei "Direct stream copy" nicht erlaubt. VirtualDub hat daher den Schnittpunkt zum nächstbesten Keyframe versetzt... und schon ist noch ein Stück der Werbung vorhanden, oder halt ZU viel entfernt.
 
Zuletzt bearbeitet:
Oh okay, gut das zu wissen danke.

Ich hab beim Schneiden mit VirtualDub(Mod) auf die Statusleiste unten geachtet.
Denn da steht neben den Frames auch ein [K] falls ich mich bei einem Keyframe befinde.

Wenn Xvid Keyframes bei günstigen Bildern erstellt, wo sich viel ändert, dann funktioniert das eh gut für mich, da anfangs immer ein Titelbild und zum Schluss immer schwarz abgeblendet wird.

Und wenns wirklich mal sein muss, kann ich ja noch immer SmartRendering verwenden.


Für die Zukunft:
In Zukunft so verfahren wie du das in Post 6 beschrieben hast?
  1. Gute Aufzeichnungssoftware und möglichst den ganzen Datenstrom
  2. Demuxen mit ProjectX
  3. Schneiden mit Cuttermaran oder MPEG2Schnitt
  4. Kodierung über AutoGK zu Avi (Xvid)
Gibts dafür grünes Licht?
 
Hi,

na endlich, stand ja schon in Post#2.

Viel Spaß noch ... ;)
 
Tja sry :D
Dachte da gibts vl. einen schnelleren Weg zum Erfolg.

Auf jeden Fall danke! Wissen++ ;)
 
Hallo,
meld mich auch mal, weil ich gerne einen Film mit 4 Szenen aufwerten würde.

Und zwar besteht der Hauptfilm aus einer Xvid (Avi)Datei. Diese kann ich mit VirtualDub/mod nicht öffnen.

2 Szenen habe ich als .wmv datei verfügbar.
2 Weitere Szenen bestehen aus einer VoB datei die ich hier als Orig.DVD habe.

Zur Verfügung als Progs. habe ich VirtualDub & Magix Video deluxe.

Wenn ich mir aber jetzt den Film in VirtualDub schonmal angucken möchte, wo ich schneiden möchte etc. erscheint bei mir folgende Fehlermeldung.
http://www.abload.de/img/unbenanntwcdf.jpg

Ich denke das ich einen Codec hierzu brauche, weiß aber nicht welchen und wohin der Kommt?

Habs auch schon im Windows Movie maker versuchen wollen, aber der ist bei W.7 nicht dabei, und ich denke der bringts auch nit so.

Wenn jemand mir en paar Ratschläge hierzu geben könnte, wie ich das Ganze am besten angehe etc. ist der erste Film den ich gerne bearbeiten würde....

Gruss
 
Hi,

warum machst du mit deiner Frage kein eigenes Thema auf?

Media Info verrät dir welcher Codec fehlt. Den Codec einfach installieren und dann noch einmal mit VD probieren. Wenn keine Fehlermeldung komm, hast du alles richtig gemacht.
 
Hey darf ich noch kurz was fragen?

Aufnehmen tu ich jetzt mit ProgDVB.
Da er mir .TS anbietet, und ich ja möglichst den ganzen Strom aufnehmen soll, werd ich das nehmen, richtig?

Ich hab jetzt mit PVA Strumento demuxed,
mit Cuttermaran geschnitten,
und was stell ich am besten zum Muxen in Cuttermaran ein (siehe Anhang)?

Vielleicht hast ja nochmal 2min für mich *liebschau* :)
 

Anhänge

  • cuttermaran.png
    cuttermaran.png
    8,9 KB · Aufrufe: 259
Lord_Alti schrieb:
Aufnehmen tu ich jetzt mit ProgDVB.
Da er mir .TS anbietet, und ich ja möglichst den ganzen Strom aufnehmen soll, werd ich das nehmen, richtig?
Die Nexus-S KANN NICHT den ganzen Transport-Strom liefern. Das ist eine hardwareseitige Begrenzung, die von der Softwareseite nicht aufgehoben werden kann. Wenn dir also ein Programm anbietet, mit der Nexus-S in eine TS-Datei aufzuzeichnen, wird trotzdem nicht auf "magische Weise" :p ein kompletter Transport-Strom draus, sondern das Programm nimmt entgegen was die Karte liefern kann, und packt es in eine TS-Datei. Fehlende Daten werden dabei entweder (soweit möglich) rekonstruiert oder halt (was zusätzliche Ton- oder Videospuren betrifft) weggelassen.
 
Zurück
Oben