Freigeben über


VCR-Dienste

Windows stellt VcR-Dienste über einen Gerätetreiber bereit, der auf dem MCI-Befehlssatz für VcRs basiert. In diesem Abschnitt wird der VISCA-Treiber (MCI Video System Control Architecture) beschrieben und erläutert, wie sie zum Steuern eines Videorecordrs verwendet werden.

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 Sony VISCA-kompatible Videorekorder, wie z. B. das CVD-1000 VDeck. Der VISCA-Treiber steuert den Bandtransport, Kanaltuner sowie VcR-Ein- und Ausgabekanäle.

Suchen und Positionieren mit einem Videorecorder

Der VISCA-Treiber verwendet zwei Methoden, um die Videobandbewegung innerhalb des Videorekorderbandtransports zu verfolgen: Timecodeinformationen und Bandzähler. Timecodeinformationen sind Zeitsteuerungsinformationen, die auf dem Videoband aufgezeichnet wurden. Die meisten Videorekorder ermöglichen die Aufzeichnung von Zeitcodes, ohne Audio- und Videospuren zu zerstören. Bandzähler schätzen die Menge des Videobands, das am Kopf des Videobands vorbeiläuft, um eine Position zu erhalten.

Sowohl Timecodeinformationen als auch Bandzähler nehmen zu, wenn sich das Videoband von Anfang nach Ende bewegt. Aufgrund seiner Genauigkeit ist die Verwendung von Timecodeinformationen zum Positionieren eines Videobands fast immer der Verwendung von Bandzählern vorzuziehen.

Die MCI-Befehlsflags zum Angeben von Positionsinformationen werden als Zeitabhängigkeiten ausgedrückt: "time format", "duration", "from", "to" und "seek". (Außerdem gibt der status Befehl "position" seinen Zeitwert im aktuellen Zeitformat zurück.)

Der VISCA-Treiber verwendet den Befehl "Zeitmodus festlegen ", um die Art der Positionierung auszuwählen, die mit einem Videoband verwendet werden soll. Wenn der Zeitmodus auf "timecode" festgelegt ist, verwenden die befehle status "position" und "time format" den Timecode auf dem Videoband. Wenn der Zeitmodus auf "counter" festgelegt ist, verwenden die befehle status "position" und "time format" (Zeitformat) Indikatoren.

Eine Anwendung kann den Zeitmodus auf "erkennen" festlegen, wenn es keine Rolle spielt, dass es zwei Quellen für Positionsinformationen gibt. Im Erkennungsmodus verwendet der VISCA-Treiber Timecodeinformationen für die Positionierung, wenn eine der folgenden Bedingungen auftritt:

  • Die Timecodeinformationen sind vorhanden, wenn der Treiber geöffnet wird.
  • Sie ändern ein Videoband mit dem festgelegten Befehl "Tür öffnen", und timecode-Informationen sind auf dem Videoband vorhanden.
  • Der Befehl "time mode" (Zeitmodus) wird erneut ausgegeben.

Wenn keine Timecodeinformationen gefunden werden, verwendet der Treiber die Bandzähler.

Um die aktuelle Positionierungsmethode zu bestimmen, geben Sie den befehl status "time type" aus, der entweder "timecode" oder "counter" zurückgibt. Sie können den aktuellen Positionierungsmodus auch mithilfe des status Befehls "Zeitmodus" identifizieren, der "timecode", "counter" oder "detect" zurückgibt.

Der status Befehl "counter" ruft den aktuellen Bandzählerwert ab, unabhängig von der aktuellen Positionierungsmethode. Sie können diesen Indikator jedoch nur mit dem Befehl set "counter" verwenden.

Der VISCA-Treiber kann das systemeigene Timecodeformat abrufen, das auf einem Videoband aufgezeichnet wurde, indem er die status "Timecodetyp" und status Befehle "Framerate" zusammen verwendet. Wenn beispielsweise der Timecodetyp "smpte" und die Bildfrequenz 25 beträgt, ist das systemeigene Timecodeformat, das auf dem Videoband aufgezeichnet wird, SMPTE 25.

Der VISCA-Treiber kann die Zählerauflösung auch mithilfe des status Befehls "Counter Resolution" abrufen, der "Sekunden" oder "Frames" zurückgibt. Das Zählerformat ist möglicherweise weiterhin auf SMPTE 30 festgelegt, aber der Rückgabewert gibt nur einen Frame von 0 zurück. Wenn der aktuelle Zeittyp Zähler ist, gilt diese Auflösung auch für den Wert, der von status "position" zurückgegeben wird.

Erfassen von Frames

Frameaufnahmebefehle stellen Standbilder für ein Frameaufnahmegerät bereit. Ein Frame-Capture-Gerät ist ein separates Hardwarestück, 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 stabilisieren. Außerdem kann der Befehl zum Aufheben der Sperre (MCI_UNFREEZE) verwendet werden, um den Bandtransport nach einem Fixierungsbefehl neu zu starten.

Der Freeze-Befehl bietet ein qualitativ hochwertiges, stabilisiertes , zeitbasiertes – korrigiertes Bild für ein Frame-Capture-Gerät. Dieser Befehl ist vorhanden, da ein Gerät möglicherweise nicht immer sein Ausgabebild mit maximaler Qualität während der Wiedergabe oder während des Anhaltens liefert. Ein solches Videobild eignet sich nicht für die Aufnahme.

Der Befehl zum Aufheben der Sperre entsperrt den Bandtransport und setzt den Transportmodus fort, der vor dem Fixierungsbefehl wirksam ist.

Wenn Ihre Anwendung ein Videobild auf dem Videorekorder aufzeichnen muss, verwenden Sie den Befehl "eingabe fixieren" 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 aus einem internen Tuner. Die Audioeingänge umfassen zwei Standardkanäle (Zeilen 1 und 2) und einen Kanal aus einem internen Tuner. Die Timecodeeingabe ist intern für den VcR.

Die normalen Ausgaben enthalten die derzeit ausgewählten Eingänge, wenn der Videorekorder aufgezeichnet wird oder wenn der Bandtransport angehalten wird, und sie enthalten den Inhalt des Videobands, wenn der Bandtransport wiedergegeben oder angehalten wird. Die überwachten Ausgaben enthalten die gleichen Informationen wie die normalen Ausgaben sowie aktuelle Timecode- und Kanalinformationen.

Unter der Annahme, dass die entsprechenden externen Eingaben mit Ihrem VcR verbunden sind und Sie entschieden haben, was Sie aufzeichnen möchten, können Sie die zu aufzeichnenden Eingaben auswählen. Wenn Sie beispielsweise das Video "svideo" und die Audioeingaben "Zeile 1" aufzeichnen oder anzeigen möchten, verwenden Sie die Befehle setvideo (MCI_SETVIDEO) und setaudio (MCI_SETAUDIO), um diese Eingabequellen auszuwählen. Sie können diese Auswahl mit dem Befehl 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 anzeigen, während die Aufzeichnung aus einer anderen. Dies ist eine gängige Vorgehensweise bei Verwendung des Tuners. Beispielsweise können Sie Kanal 4 watch, 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 aus einer anderen Quelle

  1. Verwenden Sie den Befehl settuner (MCI_SETTUNER), um die Kanäle auszuwählen, die watch und aufzeichnen sollen.
  2. Verwenden Sie den Befehl setvideo , um die Quelle für die Videoaufzeichnung auszuwählen.
  3. Verwenden Sie den Befehl setaudio , um die Audioaufnahmequelle auszuwählen.
  4. Verwenden Sie den Befehl setvideo , um die Kanal-4-Videoeingabe an die überwachte Ausgabe weiterzuleiten, um sie auf dem Bildschirm anzuzeigen.
  5. Verwenden Sie den Befehl setaudio , um den Kanal 4-Audioeingang an die überwachte Ausgabe weiterzuleiten, um die Audiodaten wiederzugeben.
  6. Überprüfen Sie Ihre Auswahl mithilfe des Befehls status.

Der VISCA-Treiber unterstützt auch einen speziellen Eingabetyp für Audio und Video, der als Stummschaltung 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 Timecode. Sie verfügen nur über einen Video- oder Timecodetitel, aber Sie können mehrere Audiospuren verwenden. Wenn Sie dies tun, legen Sie Track 1 als Standard Audiospur fest.

Der VISCA-Treiber unterstützt zwei Betriebsmodi: Assemble und Insert. Im Assemble-Modus werden alle Tracks für die Aufzeichnung ausgewählt. Im Einfügemodus können Titel unabhängig für die Aufzeichnung ausgewählt werden. Die meisten Videorecorder befinden sich standardmäßig im Assemble-Modus. Verwenden Sie den Befehl set (MCI_SET), um diese Modi zu ändern.

Aufzeichnung und Bearbeitung

Der Befehl record (MCI_RECORD) ermöglicht eine einfache Aufzeichnung und ist auf etwa 1 Sekunde der Startposition genau. Um genauer aufzuzeichnen, oder wenn Sie erwarten, den Videoinhalt zu bearbeiten, während Sie mehrere Decks gleichzeitig betreiben, sollten Sie den Befehl cue (MCI_CUE) verwenden.

Der Cue-Befehl bereitet das Gerät für die Aufzeichnung oder Wiedergabe vor. 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 ist, den Befehl auszuführen (und weil die Vorbereitung auf einen Wiedergabe - (MCI_PLAY) oder Aufzeichnungsbefehl mehrere Minuten dauern kann.

Der Videorekorder bereitet sich selbst auf die Aufzeichnung oder Wiedergabe vor, indem er zum In-Point sucht, d. h. die aktuelle Position oder die position, die mit dem Befehl "from" angegeben wird. Wenn jedoch das Flag "preroll" mit dem Cue-Befehl angegeben wird, positioniert sich der VcR selbst den Prerollabstand vom 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 capability (MCI_GETDEVCAPS) mit dem Flag "can preroll", um zu überprüfen, ob der Prerollmodus unterstützt wird.)

Hinweis

Wenn Sie mit den Positionen "from" und "to" aufzeichnen, ist die Position "from" in der Bearbeitung enthalten, und die Position "bis" ist nicht.

 

Weitere Informationen zur Aufzeichnung finden Sie unter Aufzeichnung.

Verwenden der Uhr während der Bearbeitung

Bei der Bearbeitung möchten Sie möglicherweise Segmente von einem Videorekorder in einen anderen aufzeichnen. Sie können mit der Aufzeichnung zu einem bestimmten Zeitpunkt und einer bestimmten Position auf einem Videorekorder 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 Videorekorder angeben.

Beide Videorecorder müssen für diese Art der Bearbeitung dieselbe Uhr verwenden. die Uhr hilft, beide Geräte zu synchronisieren. Mithilfe des Befehls status (MCI_STATUS) mit dem Flag "clock id" können Sie ermitteln, ob zwei Videorecorder dieselbe Uhr verwenden, um jeden Videorekorder abzufragen. Wenn die vom status-Befehl 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 gemeinsam genutzte Uhr.

Sie können die Taktauflösung auch mithilfe des Befehls status "Taktfrequenz" bestimmen. Dieser Befehl gibt die Anzahl der von der Uhr unterstützten Inkremente pro Sekunde zurück. Wenn die Uhr beispielsweise jede Millisekunde aktualisiert wird, gibt der Befehl 1000 als Taktfrequenz zurück. Der Vorteil der Verwendung der Inkrementrate besteht darin, dass die Rate als ganze Zahl ausgedrückt wird; Andernfalls wäre das Inkrement ein Gleitkommawert (mit einfacher oder doppelter Genauigkeit). Als ganze Zahl ist das Manipulieren der Inkrementrate ein einfacher Vorgang und nicht anfällig für Rundungsfehler. Sie können die Uhr zurücksetzen, indem Sie den Befehl set (MCI_SET) mit dem Flag "clock 0" (null) verwenden.

Wenn Sie einen Wiedergabebefehl (MCI_PLAY), Datensatz (MCI_RECORD) oder Suchbefehl (MCI_SEEK) ausgeben, können Sie angeben, wann der Befehl ausgeführt werden soll. Die Merkmale der verwendeten Videorekorder bestimmen, wann die einzelnen Videorekorder gestartet werden sollen. Das Timing muss die Menge an Vorabrollvorgängen jedes Geräts und die Zeit berücksichtigen, die zum Abschließen 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 Wartezeitintervall muss so lang sein, dass die Vorregistrierung und alle ausstehenden MCI-Befehle ausgeführt werden 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 zu überprüfen, ob genügend Zeit zum Senden und Abschließen aller Befehle vorhanden ist.