Servizi VCR
Windows fornisce servizi VCR tramite un driver di dispositivo basato sul set di comandi MCI per le VCR. Questa sezione descrive il driver VISCA (McI Video System Control Architecture) e spiega come usarlo per controllare un registro virtuale.
Il tipo di dispositivo vcr controlla le VRS. Per un elenco dei comandi MCI riconosciuti dai dispositivi VCR, vedere Set di comandi VCR.
Il driver MCI VISCA
Il driver MCI VISCA controlla le VDeck compatibili con Sony VISCA, ad esempio CVD-1000 VDeck. Il driver VISCA controlla il trasporto nastro, i sintonizzatori di canale e i canali di input e output del VCR.
Ricerca e posizionamento con un registro virtuale
Il driver VISCA usa due metodi per tenere traccia dello spostamento videotape all'interno del trasporto nastro VCR: informazioni sul timecode e contatori di nastri. Le informazioni sul timecode sono informazioni sulla tempistica registrate nel videotape. La maggior parte delle vcr consente la registrazione di timecode senza distruggere tracce audio e video. I contatori nastro stimano la quantità di videotape che viaggia oltre la testa del videotape per ottenere una posizione.
Le informazioni sul timecode e i contatori del nastro aumentano man mano che il videotape passa dall'inizio alla fine. A causa della sua accuratezza, l'uso delle informazioni sul timecode per posizionare un videotape è quasi sempre preferibile all'uso di contatori di nastri.
I flag di comando MCI per specificare le informazioni di posizionamento vengono espressi come dipendenze temporali: "formato ora", "duration", "from", "to" e "seek". Il comando status "position" restituisce anche il valore di ora nel formato ora corrente.
Il driver VISCA usa il comando " time mode" impostato per selezionare il tipo di posizionamento da usare con un videotape. Quando la modalità temporale è impostata su "timecode", i comandi di stato "position" e set "time format" usano il timecode nel videotape. Quando la modalità temporale è impostata su "contatore", lo stato "position" e i comandi "time format" usano contatori.
Un'applicazione può impostare la modalità temporale su "rileva" se non è importante che siano presenti due origini di informazioni sulla posizione. Quando è in modalità di rilevamento, il driver VISCA usa le informazioni sul timecode per il posizionamento quando si verifica una delle condizioni seguenti:
- Le informazioni sul codice ora sono presenti all'apertura del driver.
- È possibile modificare un videotape con il comando "porta aperta" e le informazioni sul timecode impostate sono presenti nel videotape.
- Il comando set "time mode" viene ristampato.
Se non è possibile trovare informazioni sul timecode, il driver utilizza i contatori del nastro.
Per determinare il metodo di posizionamento corrente, eseguire il comando di stato "time type", che restituisce "timecode" o "counter". È anche possibile identificare la modalità di posizionamento corrente usando il comando status "time mode", che restituisce "timecode", "counter" o "detect".
Il comando "counter" di stato recupera il valore del contatore del nastro corrente, indipendentemente dal metodo di posizionamento corrente; Tuttavia, è possibile usare questo contatore di sola lettura con il comando "counter" impostato .
Il driver VISCA può recuperare il formato timecode nativo registrato in un videotape usando i comandi status "timecode type" e status "frame rate" insieme. Ad esempio, se il tipo timecode è "smpte" e la frequenza dei fotogrammi è 25, il formato timecode nativo registrato nel videotape è SMPTE 25.
Il driver VISCA può anche recuperare la risoluzione del contatore usando il comando di stato "risoluzione contatore", che restituisce "secondi" o "frame". Il formato del contatore potrebbe essere ancora impostato su SMPTE 30, ma il valore restituito restituisce solo un frame pari a 0. Se il tipo di ora corrente è contatore, questa risoluzione si applica anche al valore restituito dallo stato "position".
Acquisizione di fotogrammi
I comandi di acquisizione dei fotogrammi forniscono immagini ancora per un dispositivo di acquisizione fotogrammi. Un dispositivo di acquisizione fotogrammi è un componente hardware separato in grado di leggere e archiviare l'immagine video. Il driver VISCA supporta il comando freeze (MCI_FREEZE) per stabilizzare un'immagine ancora per l'acquisizione. Inoltre, il comando unfreeze (MCI_UNFREEZE) può essere usato per riavviare il trasporto nastro seguendo un comando di blocco .
Il comando di blocco fornisce un'immagine corretta di alta qualità, stabilizzata e basata sul tempo per un dispositivo di acquisizione fotogrammi. Questo comando esiste perché un dispositivo potrebbe non fornire sempre l'immagine di output di massima qualità durante la riproduzione o durante la sospensione; tale immagine video non è adatta per l'acquisizione.
Il comando di sblocco sblocca il trasporto nastro e riprende la modalità di trasporto in vigore prima del comando di blocco .
Quando l'applicazione deve registrare un'immagine video nel registro virtuale, usare il comando "input" di blocco o il comando cue (MCI_CUE) per registrare l'immagine.
Selezione di input
Il driver VISCA supporta tre tipi di input: video, audio e timecode. Gli input video includono due canali standard (righe 1 e 2), un canale SVideo, un canale ausiliario e un canale da un tuner interno. Gli input audio includono due canali standard (righe 1 e 2) e un canale da un tuner interno. L'input timecode è interno al registro virtuale.
Gli output normali trasportano gli input attualmente selezionati quando il registro virtuale registra o quando il trasporto nastro viene arrestato e trasportano il contenuto della videotape quando il trasporto nastro è in riproduzione o in pausa. Gli output monitorati contengono le stesse informazioni degli output normali, oltre alle informazioni sul timecode e sul canale correnti.
Supponendo che gli input esterni appropriati siano connessi al registro virtuale e si è deciso cosa si vuole registrare, è possibile selezionare gli input da registrare. Ad esempio, per registrare o visualizzare dal video "svideo" e dagli input audio "riga 1", usare i comandi setvideo (MCI_SETVIDEO) e setaudio (MCI_SETAUDIO) per selezionare queste origini di input. È possibile verificare queste selezioni usando il comando status (MCI_STATUS).
Per impostazione predefinita, il monitoraggio mostra esattamente ciò che appare come output. In alcuni casi, tuttavia, potrebbe essere necessario visualizzare un'origine durante la registrazione da un'altra. Si tratta di una pratica comune che usa il tuner. Ad esempio, è possibile watch canale 4 mentre si registra channel 7. In questo caso, sono disponibili due input di tuner logici. È possibile configurare il registro virtuale usando i comandi seguenti:
Per esaminare un'origine durante la registrazione da un'altra
- Usare il comando settuner (MCI_SETTUNER) per selezionare i canali da watch e registrare.
- Usare il comando setvideo per selezionare l'origine di registrazione video.
- Usare il comando setaudio per selezionare l'origine di registrazione audio.
- Usare il comando setvideo per instradare l'input video del canale 4 all'output monitorato per visualizzarlo sullo schermo.
- Usare il comando setaudio per instradare l'input audio del canale 4 all'output monitorato per riprodurre l'audio.
- Verificare le selezioni usando il comando status .
Il driver VISCA supporta anche un tipo di input speciale per audio e video denominato mute. L'audio consente la selezione di "nessun input", utile durante la registrazione di un segnale vuoto.
Selezione delle tracce di registrazione
Esistono tre tipi di tracce di registrazione in un videotape: video, audio e timecode. Hai una sola traccia video o timecode, ma puoi usare più tracce audio. Quando lo fai, rendi traccia 1 la traccia audio principale.
Il driver VISCA supporta due modalità operative: assemblare e inserire. In modalità assemblaggio, vengono selezionate tutte le tracce da registrare. In modalità di inserimento, le tracce possono essere selezionate in modo indipendente per la registrazione. Per impostazione predefinita, la maggior parte delle vcr è in modalità assemblaggio. Usare il comando set (MCI_SET) per modificare queste modalità.
Registrazione e modifica
Il comando record (MCI_RECORD) fornisce una registrazione semplice ed è accurato a circa 1 secondo della posizione iniziale. Per registrare in modo più accurato o se si prevede di modificare il contenuto video durante l'esecuzione simultanea di più mazzi, è consigliabile usare il comando cue (MCI_CUE).
Il comando cue prepara il dispositivo per la registrazione o la riproduzione . Usare il comando "input" per preparare il dispositivo per la registrazione. Il comando cue è necessario perché un'applicazione deve sapere quando il dispositivo è pronto per eseguire il comando (e perché può richiedere alcuni minuti per preparare un comando di riproduzione (MCI_PLAY) o un comando di record .
Il record di controllo virtuale si prepara per la registrazione o la riproduzione cercando di in-point, ovvero la posizione corrente o la posizione specificata usando il comando "from". Se il flag "preroll" viene specificato con il comando cue , tuttavia, il registro virtuale posiziona la distanza della preroll dal punto in cui si trova. Il flag "preroll" indica anche che il registro virtuale usa qualsiasi modalità di modifica applicabile, quindi è importante usare "preroll", soprattutto quando si vuole la registrazione più accurata. Usare il comando capability (MCI_GETDEVCAPS) con il flag "can preroll" per verificare se la modalità preroll è supportata.
Nota
Quando si registrano posizioni "from" e "to", la posizione "from" viene inclusa nella modifica e la posizione "a" non è.
Per altre informazioni sulla registrazione, vedere Registrazione.
Utilizzo dell'orologio durante la modifica
Durante la modifica, è possibile registrare i segmenti da un registro virtuale a un altro. È possibile iniziare la registrazione in un momento specifico e in una posizione in un VCR mentre un altro inizia a suonare contemporaneamente e posizione specificando un'azione (riproduzione o record), una posizione e un'ora per ogni VCR.
Entrambe le vcr devono usare lo stesso orologio per questo tipo di modifica; l'orologio consente di sincronizzare entrambi i dispositivi. È possibile determinare se due vcr condividono lo stesso orologio usando il comando status (MCI_STATUS) con il flag "clock id" per eseguire una query su ogni registro virtuale. Se i numeri di identificazione restituiti dal comando di stato sono uguali, i dispositivi usano lo stesso orologio. Come risorsa condivisa, l'orologio può essere connesso a più vcr. Il driver VISCA supporta solo un orologio condiviso.
È anche possibile determinare la risoluzione dell'orologio usando il comando " frequenza di incremento dell'orologio". Questo comando restituisce il numero di incrementi dell'orologio supportato al secondo. Ad esempio, se l'orologio viene aggiornato ogni millisecondo, il comando restituisce 1000 come frequenza di incremento dell'orologio. Il vantaggio dell'uso della frequenza di incremento è che la frequenza è espressa come intero; in caso contrario, l'incremento sarà un valore a virgola mobile (a precisione singola o doppia). Come intero, la modifica della frequenza di incremento è un'operazione semplice e non è soggetta a errori di arrotondamento. È possibile reimpostare l'orologio usando il comando set (MCI_SET) con il flag "clock 0" (zero).
Quando si esegue un comando play (MCI_PLAY), record (MCI_RECORD) o cerca (MCI_SEEK), è possibile specificare quando il comando deve essere eseguito. Le caratteristiche delle vm virtuali usate determinano quando avviare ogni VCR. La tempistica deve tenere conto della quantità di preroll di ogni dispositivo e la quantità di tempo necessaria per completare i comandi MCI usati per configurare la sessione di modifica. A tale scopo, recuperare l'ora dell'orologio e aggiungere un intervallo di attesa di 5 a 10 secondi. L'intervallo di attesa deve essere abbastanza lungo per consentire al preroll e agli eventuali comandi MCI in sospeso di completare l'esecuzione.
Per assicurarsi che il periodo di attesa sia abbastanza lungo, inserire l'ultimo comando record nell'applicazione e controllare l'ora immediatamente prima. Se l'intervallo è troppo breve, riavviare il comando play . In alternativa, è possibile controllare l'ora immediatamente dopo l'ultimo comando dello script per verificare che sia necessario inviare e completare tutti i comandi.