VCR-Dienste
Windows bietet VCR-Dienste über einen Gerätetreiber, der auf dem MCI-Befehlssatz für VCRs basiert. In diesem Abschnitt wird der VISCA-Treiber (Video System Control Architecture) von MCI beschrieben, und es wird erläutert, wie Sie ihn zum Steuern eines VCR verwenden.
Der Vcr-Gerätetyp steuert VCRs. Eine Liste der MCI-Befehle, die von VCR-Geräten erkannt werden, finden Sie unter VCR-Befehlssatz.
Der MCI-VISCA-Treiber
Der MCI-VISCA-Treiber steuert Msi VISCA-kompatible VCRs, z.B. CVD-1000 VDeck. Der VISCA-Treiber steuert den Bandtransport, Kanal-Tuner und VCR-Eingabe- und -Ausgabekanäle.
Suchen und Positionieren mit einem VCR
Der VISCA-Treiber verwendet zwei Methoden zum Nachverfolgen der Videobandbewegung innerhalb des VCR-Bandtransports: Zeitcodeinformationen und Bandzähler. Timecodeinformationen sind Zeitsteuerungsinformationen, die auf dem Videoband aufgezeichnet wurden. Bei den meisten VCRs können Zeitcodes aufgezeichnet werden, ohne Audio- und Videospuren zu zerstören. Bandzähler schätzen die Videobandmenge, die über den Videobandkopf hinausläuft, um eine Position zu erhalten.
Sowohl Zeitcodeinformationen als auch Bandzähler nehmen zu, wenn sich die Videoaufzeichnung von Anfang zu Ende bewegt. Aufgrund der Genauigkeit ist die Verwendung von Zeitcodeinformationen zum Positionieren eines Videobands fast immer der Verwendung von Bandzählern vorzuziehen.
Die MCI-Befehlsflags zum Angeben von Positionierungsinformationen werden als Zeitabhängigkeiten ausgedrückt: "zeitformat", "duration", "from", "to" und "seek". (Außerdem gibt der Statusbefehl "position" seinen Zeitwert im aktuellen Zeitformat zurück.)
Der VISCA-Treiber verwendet den Befehl "Zeitmodus festlegen", um den Typ der Positionierung auszuwählen, der mit einem Videoband verwendet werden soll. Wenn der Zeitmodus auf "timecode" festgelegt ist, verwenden die Befehle "position" und "time format" den Zeitcode auf dem Videoband. Wenn der Zeitmodus auf "counter" festgelegt ist, verwenden die Befehle "position" und "time format" Indikatoren.
Eine Anwendung kann den Zeitmodus auf "erkennen" festlegen, wenn es nicht wichtig ist, dass es möglicherweise zwei Quellen für Positionsinformationen gibt. Im Erkennungsmodus verwendet der VISCA-Treiber Zeitcodeinformationen für die Positionierung, wenn eine der folgenden Bedingungen auftritt:
- Die Timecodeinformationen sind vorhanden, wenn der Treiber geöffnet wird.
- Sie ändern eine Videoaufzeichnung mit dem Set-Befehl "door open", und die Zeitcodeinformationen sind auf dem Videoband vorhanden.
- Der Befehl "Zeitmodus festlegen" wird erneut ausgestellt.
Wenn keine Timecodeinformationen gefunden werden können, verwendet der Treiber die Bandzähler.
Um die aktuelle Positionierungsmethode zu bestimmen, geben Sie den Statusbefehl "time type" aus, der entweder "timecode" oder "counter" zurückgibt. Sie können den aktuellen Positionierungsmodus auch mithilfe des Befehls "time mode" identifizieren, der "timecode", "counter" oder "detect" zurückgibt.
Der Statusbefehl "counter" ruft den aktuellen Bandzählerwert unabhängig von der aktuellen Positionierungsmethode ab. Sie können diesen Indikator jedoch nur mit dem Befehl "counter" festlegen.
Der VISCA-Treiber kann das systemeigene Timecodeformat abrufen, das auf einem Videoband aufgezeichnet wurde, indem die Befehle "timecode type" und status "frame rate" zusammen verwendet werden. Wenn beispielsweise der Timecodetyp "smpte" und die Bildrate 25 ist, lautet das systemeigene Zeitcodeformat, das auf dem Videoband aufgezeichnet wird, SMPTE 25.
Der VISCA-Treiber kann die Indikatorauflösung auch mithilfe des Statusbefehls "Counter Resolution" abrufen, der "Sekunden" oder "Frames" zurückgibt. Das Zählerformat kann weiterhin auf SMPTE 30 festgelegt sein, aber der Rückgabewert gibt nur einen Frame von 0 zurück. Wenn der aktuelle Zeittyp counter ist, gilt diese Auflösung auch für den Wert, der vom Status "position" zurückgegeben wird.
Erfassen von Frames
Frameerfassungsbefehle stellen Standbilder für ein Frameerfassungsgerät bereit. Ein Frameerfassungsgerät ist ein separates Hardwaregerät, das das Videobild lesen und speichern kann. Der VISCA-Treiber unterstützt den Befehl freeze (MCI _ FREEZE), um ein Standbild für die Erfassung zu stabil zu machen. Außerdem kann der Befehl unfreeze (MCI _ UNFREEZE) verwendet werden, um den Bandtransport nach einem Freeze-Befehl neu zu starten.
Der Befehl freeze stellt ein qualitativ hochwertiges, stabiles, zeitbasiertes, korrigiertes Bild für ein Frameerfassungsgerät bereit. Dieser Befehl ist vorhanden, da ein Gerät während der Wiedergabe oder während der Pause möglicherweise nicht immer sein Ausgabebild mit maximaler Qualität übermittelt. ein solches Videobild eignet sich nicht für die Erfassung.
Der Befehl unfreeze entsperrt den Bandtransport und setzt den vor dem Freeze-Befehl wirksamen Transportmodus fort.
Wenn Ihre Anwendung ein Videobild auf dem VCR aufzeichnen muss, verwenden Sie den Befehl "input" einfrieren oder den Befehl cue (MCI _ CUE), um das Bild aufzuzeichnen.
Auswählen von Eingaben
Der VISCA-Treiber unterstützt drei Eingabetypen: Video, Audio und Timecode. Die Videoeingaben umfassen zwei Standardkanäle (Zeilen 1 und 2), einen SVideo-Kanal, einen Hilfskanal und einen Kanal von einem internen Tuner. Die Audioeingaben umfassen zwei Standardkanäle (Zeilen 1 und 2) und einen Kanal von einem internen Tuner. Die Timecodeeingabe ist für den VCR intern.
Die normalen Ausgaben enthalten die derzeit ausgewählten Eingaben, wenn der VCR aufgezeichnet wird oder wenn der Bandtransport beendet wird, und sie enthalten den Inhalt der Videoaufzeichnung, wenn der Bandtransport wiedergegeben oder angehalten wird. Die überwachten Ausgaben enthalten die gleichen Informationen wie die normalen Ausgaben sowie aktuelle Zeitcode- und Kanalinformationen.
Wenn die entsprechenden externen Eingaben mit Ihrem VCR verbunden sind und Sie entschieden haben, was Sie aufzeichnen möchten, können Sie die zu erfassenden Eingaben auswählen. Um beispielsweise das Video "svideo" und die Audioeingaben der Zeile 1 aufzuzeichnen oder anzuzeigen, verwenden Sie die Befehle setvideo (MCI _ SETVIDEO) und setaudio (MCI _ SETAUDIO), um diese Eingabequellen auszuwählen. Sie können diese Auswahl mithilfe des Befehls status (MCI _ STATUS) überprüfen.
Standardmäßig zeigt der Monitor genau das an, was als Ausgabe angezeigt wird. Manchmal möchten Sie jedoch möglicherweise eine Quelle während der Aufzeichnung von einer anderen quelle anzeigen. Dies ist eine gängige Vorgehensweise bei der Verwendung des Tuners. Angenommen, Sie möchten Kanal 4 ansehen, während Sie Kanal 7 aufzeichnen. In diesem Fall verfügen Sie über zwei logische Tunereingaben. Sie können den VCR mit den folgenden Befehlen einrichten:
So überprüfen Sie eine Quelle während der Aufzeichnung von einer anderen
- Verwenden Sie den Befehl settuner (MCI _ SETTUNER), um die Kanäle auszuwählen, die überwacht und erfasst werden sollen.
- Verwenden Sie den Befehl setvideo, um die Videoaufzeichnungsquelle auszuwählen.
- Verwenden Sie den Befehl setaudio, um die Audioaufzeichnungsquelle auszuwählen.
- Verwenden Sie den Befehl setvideo, um die Channel 4-Videoeingabe an die überwachte Ausgabe weiterzuleiten, um sie auf dem Bildschirm anzuzeigen.
- Verwenden Sie den Befehl setaudio, um die Channel 4-Audioeingabe an die überwachte Ausgabe weiterzuleiten, um die Audiodaten wiederzugeben.
- Überprüfen Sie Ihre Auswahl mithilfe des Statusbefehls.
Der VISCA-Treiber unterstützt auch einen speziellen Eingabetyp für Audio und Video, der als stumme bezeichnet wird. Stummschalten ermöglicht die Auswahl von "Keine Eingabe", was beim Aufzeichnen eines leeren Signals nützlich ist.
Auswählen von Aufzeichnungsspuren
Auf einem Videoband sind drei Arten von Aufzeichnungsspuren vorhanden: Video, Audio und Zeitcode. Sie verfügen nur über eine Video- oder Zeitcodespur, aber Sie können mehrere Audiospuren verwenden. Wenn Sie dies tun, machen Sie Track 1 zur Hauptaudiospur.
Der VISCA-Treiber unterstützt zwei Betriebsmodi: Zusammenstellen und Einfügen. Im Assemblermodus werden alle Spuren ausgewählt, die aufgezeichnet werden sollen. Im Einfügemodus können Spuren unabhängig für die Aufzeichnung ausgewählt werden. Die meisten VCRs befinden sich standardmäßig im Assemblermodus. Verwenden Sie den Befehl set (MCI _ SET), um diese Modi zu ändern.
Aufzeichnen und Bearbeiten
Der Befehl record (MCI _ RECORD) stellt eine einfache Aufzeichnung bereit und ist ungefähr 1 Sekunde der Anfangsposition genau. Verwenden Sie den Befehl cue (MCI _ CUE), um die Videoinhalte genauer aufzuzeichnen, oder wenn Sie erwarten, den Videoinhalt während des gleichzeitigen Betriebs mehrerer Stapel zu bearbeiten.
Mit dem Befehl cue wird das Gerät für die Aufzeichnung oder Wiedergabe vorbereitet. Verwenden Sie den Befehl "input", um das Gerät für die Aufzeichnung vorzubereiten. Der Cue-Befehl ist erforderlich, da eine Anwendung wissen muss, wann das Gerät bereit für die Ausführung des Befehls ist (und weil es mehrere Minuten dauern kann, bis die Vorbereitung auf ein Wiedergabe -MCI _ PLAY) oder einen Aufzeichnungsbefehl dauert.
Der VCR bereitet sich auf die Aufzeichnung oder Wiedergabe vor, indem er nach der Punktposition sucht, bei der es sich um die aktuelle Position oder die Position handelt, die mithilfe des Befehls "from" angegeben wird. Wenn das Flag "preroll" mit dem Cue-Befehl angegeben wird, positioniert sich der VCR jedoch selbst vom Prärollabstand zum Punkt. Das Flag "preroll" gibt auch an, dass der VCR einen beliebigen anwendbaren Bearbeitungsmodus verwendet. Daher ist es wichtig, dass Sie "Preroll" verwenden, insbesondere wenn Sie die genaueste Aufzeichnung wünschen. (Verwenden Sie den Befehl (MCI _ GETDEVCAPS)mit dem Flag "can preroll", um zu überprüfen, ob der Prerollmodus unterstützt wird.)
Hinweis
Wenn Sie mithilfe von "from"- und "to"-Positionen aufzeichnen, ist die Position "from" in der Bearbeitung enthalten, und die Position "to" ist nicht.
Weitere Informationen zur Aufzeichnung finden Sie unter Aufzeichnen von.
Verwenden der Uhr während der Bearbeitung
Bei der Bearbeitung können Sie Segmente von einem VCR zu einem anderen aufzeichnen. Sie können mit der Aufzeichnung zu einem bestimmten Zeitpunkt und an einer bestimmten Position auf einem VCR beginnen, während ein anderer mit der Wiedergabe zur gleichen Zeit und Position beginnt, indem Sie eine Aktion (Wiedergabe oder Aufzeichnung), eine Position und eine Uhrzeit für jeden VCR angeben.
Beide VCRs müssen für diese Art der Bearbeitung dieselbe Uhr verwenden. die Uhr hilft bei der Synchronisierung beider Geräte. Sie können ermitteln, ob zwei VCRs dieselbe Uhr verwenden, indem Sie den Befehl status (MCI _ STATUS) mit dem Flag "clock id" verwenden, um jeden VCR abzufragen. Wenn die vom Statusbefehl zurückgegebenen Identifikationsnummern identisch sind, verwenden die Geräte dieselbe Uhr. Als freigegebene Ressource kann die Uhr mit mehreren VCRs verbunden werden. Der VISCA-Treiber unterstützt nur eine freigegebene Uhr.
Sie können die Taktauflösung auch mithilfe des Befehls "Taktinkrementrate" bestimmen. Dieser Befehl gibt die Anzahl von Schritten zurück, die die Uhr pro Sekunde unterstützt. Wenn die Uhr beispielsweise alle Millisekunden aktualisiert wird, gibt der Befehl 1000 als Taktinkrementrate zurück. Der Vorteil der Verwendung der Inkrementrate besteht darin, dass die Rate als ganze Zahl ausgedrückt wird. Andernfalls ist das Inkrement ein Gleitkommawert (mit einfacher oder doppelter Genauigkeit). Als ganze Zahl ist die Bearbeitung der Inkrementrate ein einfacher Vorgang und nicht anfällig für Rundungsfehler. Sie können die Uhr mithilfe des Befehls set (MCI _ SET) mit dem Flag "clock 0" (null) zurücksetzen.
Wenn Sie einen Wiedergabebefehl (MCI _ PLAY), record (MCI _ RECORD) oder seek (MCI _ SEEK) ausgeben, können Sie angeben, wann der Befehl ausgeführt werden soll. Die Merkmale der verwendeten VCRs bestimmen, wann die einzelnen VCR gestartet werden sollen. Bei der zeitlichen Steuerung muss die Menge an Vorabrolls berücksichtigt werden, die für jedes Gerät erforderlich sind, sowie die Zeit, die zum Ausführen der MCI-Befehle zum Einrichten der Bearbeitungssitzung benötigt wird. Rufen Sie hierzu die Uhrzeit ab, und fügen Sie ein Warteintervall von 5 bis 10 Sekunden hinzu. (Das Warteintervall muss lang genug sein, damit die Vorrolling und alle ausstehenden MCI-Befehle die Ausführung beenden können.)
Um sicherzustellen, dass die Wartezeit lang genug ist, platzieren Sie den Datensatzbefehl zuletzt in Ihrer Anwendung, und überprüfen Sie die Zeit unmittelbar davor. Wenn das Intervall zu kurz ist, starten Sie den Wiedergabebefehl neu. Alternativ können Sie die Zeit unmittelbar nach dem letzten Befehl des Skripts überprüfen, um sicherzustellen, dass genügend Zeit zum Senden und Abschließen aller Befehle vorhanden ist.