DVD SVCD Forum Foren-Übersicht
FAQFAQ     SuchenSuchen     MitgliederlisteMitgliederliste     Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen     ProfilProfil     LoginLogin      RegistrierenRegistrieren 

DVD SVCD Forum Foren-Übersicht -> Anleitungen - Erklärungen - Hilfen - Tipps
Capture ohne Framedrops und perfektem AV-Sync
Neue Antwort erstellen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Helmut 
globaler Moderator


Anmeldungsdatum: 06.05.2001
Beiträge: 30601
Wohnort: Frankfurt

Benutzer-Profile anzeigen Private Nachricht senden
Beitrag Beitrag 0 - Verfasst am: Mo März 18, 2002 11:37    Titel: Antworten mit Zitat

Capture ohne Framedrops mit VirtualDub_sync

Was ist VirtualDub_sync?

VirtualDub_sync Modified VirtualDub ist eine modifizierte Version der erstklassigen Capture- und Videobearbeitungssoftware VirtualDub von Avery Lee, die als Freeware bzw. Open-Source-Projekt zur Verfügung steht virtualdub. Geändert wurden nur wenige Zeilen Sourcecode in den Capture-Routinen für Video und Audio. Zusätzlich wurden von mir für die nötige Echtzeit-Signalverarbeitung noch ein paar C/Assembler-Funktionen hinzugefügt.

Was macht diese Modifikation jetzt eigentlich?

Mit dieser Modifikation wurde versucht ein grundsätzliches Synchronisations-Problem zu beheben, welches immer dann auftritt, wenn mittels TV-Karte das Videosignal aufgenommen wird und mit einer separaten Soundkarte das Audiosignal. Folge sind "dropped Frames" beim Capturen, die in regelmäßigen Abständen von 1-10 Minuten auftreten und nahezu unabhängig vom verwendeten Capture-Programm sind. VirtualDub_sync vermeidet diese Art von "dropped Frames".

Ja aber was kann VirtualDub_sync, was die Originalversion bzw. die anderen Programme nicht können?

Im folgenden versuch ich die Vorgänge mal etwas genauer zu beschreiben.
Zum einen liefert das Videosignal bei PAL (50Hz) ca. alle 20ms ein neues Halbbild zum anderen tastet die Soundkarte das analoge Audiosignal alle ~22.67us (bei 44.1kHz) ab und wandelt es in einen digitalen Wert (eine ganze Zahl). In der Regel macht die TV-Karte alles richtig und liefert dem Computer jedes ankommende Halbbild unabhängig davon ob es jetzt exakt alle 20ms oder geringfügig früher oder später eintrifft. Die Soundkarte widerum hat ihren eigenen Taktgeber (Quarzoszillator) der jedoch auch nicht hundertprozentig genau arbeitet. Wenn jetzt bei der Aufnahme die zeitliche Beziehung der abgetasteten Audiowerte und der Halbbilder nicht mitprotokolliert wird (einfügen von Zeitstempeln) so kann man bei der Wiedergabe nicht mehr wissen welches Halbbild zu welchen Audiowerten gehört. Bei der Wiedergabe wird jetzt einfach definiert, dass zu jedem Frame (=zwei Halbbilder) 2*20ms/22.67us = 44100/25 = 1764 Audio-Abtastwerte gehören. Daran hält sich auch der Mediaplayer oder der DVD-Player wenn das aufgenommene Video ensprechend codiert wurde. War jetzt bei der Aufnahme der Sample-Takt der Soundkarte ein wenig zu schnell oder zu langsam, so werden bei der Wiedergabe zu den Videoframes die falschen Audiowerte abgespielt und der Ton ist dann z. Bsp. beim Sprechen nicht mehr Lippensynchron. Es gibt jetzt mehrere Möglichkeiten das Ganze in den Griff zu kriegen.


  • 1.) Der Takt des Audio Analog-Digitalwandlers wird an das Videosignal gekoppelt. Wird so bei den besseren Videokarten gemacht, bei denen der Audio AD-Wandler mit auf der Karte ist (unglaublich aber wahr: auf dem Chip BT878 von Brooktree, der auf sehr vielen preisgünstigen TV-Karten zum Einsatz kommt ist ebenfalls eine vollständige Audio-AD-Wandler-Einheit vorhanden, für die es jedoch keine Treiber gibt und die oftmals gar nicht vom Kartenhersteller angeschlossen wurde).
  • 2.) Es werden Zeitstempel beim Capturen erzeugt und bei der Wiedergabe entsprechend berücksichtigt. Bei einem MPEG-Video ist das üblich, bei AVI-verpackten Videos bin ich mir nicht sicher ob die Software-Player das berücksichtigen - standardisiert ist es wohl.
  • 3.) Das Videosignal wird bearbeitet:
    Beim Capturen werden Frames verdoppelt oder entfernt, d.h. "dropped Frames". Nachteil: eventuell sind beim Abspielen "Bildruckler" zu erkennen.
  • 4.) Das Audiosignal wird bearbeitet:
    Die digitalen Audiosignale werden einer Sample-Rate-Conversion (SRC) unterzogen, d.h. das Audiosignal wird geringfügig (sehr geringfügig) in der Zeit gestaucht oder gedehnt. Nachteil: Eine digital Signalverarbeitung der Audiosignale kann nie verlustfrei sein. Jedoch sind die Degradationen bei geeignteter Wahl der verwendeten Verfahren so gering, dass diese im Vergleich zu der Quantisierung auf 16bit vernachlässigbar sind. Bei der Professionellen Musikverarbeitung werden ebenfalls SRC-Verfahren verwendet, wenn zwei digitale Signale aus verschiedenen Quellen gemischt werden müssen.


Alle mir bekannten Capture-Programme verwenden die Variante drei, produzieren also "dropped Frames".

VirtualDub_sync verwendet die Variante 4, nimmt also jedes Halbbild so wie es der TV-Karten-Treiber liefert und produziert keine "dropped Frames", legt dafür aber Hand am Audiosignal an, um die Synchronität zu gewährleisten.


Ich habe mit VirtualDub_sync aufgenommen und trozdem "dropped Frames" bekommen. Wie ist das möglich?

VirtualDub_sync nimmt jedes Frame so wie es der Treiber liefert. Wenn der Treiber ein Frame wegwirft kann auch VirtualDub_sync es nicht mehr wiederherstellen. Mögliche Ursachen für solche "dropped Frames" sind schlechte Videosignale, so dass der TV-Decoder-Chip durcheinanderkommt, zu hohe CPU-Belastung, Hardware-Konflikte etc. Außerdem braucht die SRC-Routine auch ein wenig CPU-Rechenzeit (ca. 5%-10%). Diese "dropped Frames"-Probleme kann VD_sync nicht beheben.


Du sagst, dass das Audiosignal gestaucht/gedehnt wird, ich kann aber nichts davon hören?

Das ist ja gerade das Ziel von VirtualDub_sync: möglichst nichts verändern. Die Abtastraten-Änderung ist wirklich so gering, dass selbst das beste Gehör keine Tonanhebung, "Eiern" oder dergleichen wahrnehmen kann. Die maximale Ratenänderung liegt unterhalb von drei Promille und ein "Eiern" wird durch eine langsame, adaptive Ratenanpassung vermieden.


Ich höre Knackser!

Verwende die Version sync1_01c. In der alten Version gab es ein Bug. Knackser können aber auch andere Ursachen haben wie EM-Interferenz, Brummschleifen, Handys usw. Treten die Knackser mit dem originalen VirtualDub nicht auf, dann bitte unbedingt mir mitteilen.


    Was bedeuten die Zahlen in der Statusleiste?
  • - on: 0/1, Sample-Rate-Conversion inaktiv / aktiv
  • - clk_V: Frequenzoffset zur Korrektur eines Treiberfehlers
  • - delta_AV (all): Momentane (gesamte) Frequenzabweichung zwischen Audiosignal und Videosignal vor der SRC
  • - phase: mittlere Abweichung der Phase von Audio und Video in Mikrosekunden
  • - adjust: Anzahl von Audio-Samples die mittels SRC hinzugefügt wurden

Im Normalbetrieb sollte der "phase"-Wert sich um die Null bewegen, und "adjust" relativ konstant bleiben. Die beiden Werte von delta_AV sollten etwa gleich sein.

geschrieben von A. Dittrich

Modified VirtualDub* Capture Routine with
High Quality Realtime Sample Rate Conversion
and Phase Servo Loop


Modified VirtualDub Download A. Dittrich


Diskussion hier:
Capture ohne Framedrops und perfektem AV-Sync
FORUM 
globaler Moderator


Anmeldungsdatum: 04.07.2001
Beiträge: 134

Benutzer-Profile anzeigen Private Nachricht senden
Beitrag Beitrag 1 - Verfasst am: Mi Mai 08, 2002 17:35    Titel: Antworten mit Zitat

Hallo,
nachdem ich keine neuen Bugs mehr gefunden habe und wenigstens einer (Gandalf) mit der neuen Version gute Resultate erzielt, hab ich es jetzt ins Netz gestellt -> VirtualDub-1_4_10__sync1_02.

Hauptänderungen:
- neuer Timing Dialog ("Capture->Timing->...") mit drei neuen sync-Verfahren zur Auswahl
- geringe Änderung an der Status Zeile

Theoretisch sollte die Syncronisation jetzt auch bei komprimierten Audiosignalen funktionieren (jedoch nur durch Framedrops/adds, da es prinzipiell unter VD ziemlich unmöglich ist hier eine Sample-Rate-Conversion in den Signalfluss zu integrieren). Getestet ist es mit komprimiertem Audio aber nicht, da ich 1.) wenig Zeit habe und 2.) man sowieso zur Zeit Audio (noch) als PCM aufnehmen sollte und erst später komprimiert, da sonst viel mehr schief gehen kann.

Gruss, A. Dittrich
Beiträge der letzten Zeit anzeigen:   


DVD SVCD Forum Foren-Übersicht -> Anleitungen - Erklärungen - Hilfen - Tipps
Neue Antwort erstellen


 
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Datenschutzerklärung


Powered by phpBB © 2001, 2005 phpBB Group