Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
[O recurso associado a esta página, MCI, é um recurso legado. Foi substituído por MediaPlayer. MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer em vez de MCI, sempre que possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
O Windows fornece serviços de videocassete através de um driver de dispositivo baseado no conjunto de comandos MCI para videocassetes. Esta seção descreve o driver MCI Video System Control Architecture (VISCA) e explica como usá-lo para controlar um videocassete.
O vcr tipo de dispositivo controla VCRs. Para obter uma lista dos comandos MCI reconhecidos por dispositivos VCR, consulte VCR Command set.
O driver MCI VISCA
O driver MCI VISCA controla videocassetes compatíveis com Sony VISCA, como o CVD-1000 VDeck. O driver VISCA controla o transporte de fita, sintonizadores de canal e canais de entrada e saída de videocassete.
Pesquisa e posicionamento com um videocassete
O driver VISCA usa dois métodos para rastrear o movimento da fita de vídeo dentro do transporte de fita VCR: de informações de código de tempo e contadores de fita . Informações de código de tempo são informações de tempo que foram gravadas na fita de vídeo. A maioria dos videocassetes permite que os códigos de tempo sejam gravados sem destruir faixas de áudio e vídeo. Os contadores de fita estimam a quantidade de fita de vídeo que passa pela cabeça da fita de vídeo para obter uma posição.
As informações de código de tempo e os contadores de fita aumentam à medida que a fita de vídeo se move do início ao fim. Devido à sua precisão, o uso de informações de código de tempo para posicionar uma fita de vídeo é quase sempre preferível ao uso de contadores de fita.
Os sinalizadores de comando MCI para especificar informações de posicionamento são expressos como dependências de tempo: "formato de tempo", "duração", "de", "para" e "buscar". (Além disso, o comando status "position" retorna seu valor de tempo no formato de hora atual.)
O driver VISCA usa o comando set "time mode" para selecionar o tipo de posicionamento a ser usado com uma fita de vídeo. Quando o modo de tempo é definido como "timecode", o status do "position" e comandos definidos "time format" usam o timecode na fita de vídeo. Quando o modo de tempo é definido como "contador", o status "posição" e definir comandos "formato de tempo" usam contadores.
Um aplicativo pode definir o modo de tempo para "detetar" se não importa que possa haver duas fontes de informações de posição. Quando no modo de deteção, o driver VISCA usa informações de código de tempo para posicionamento quando qualquer uma das seguintes condições ocorre:
- As informações do timecode estão presentes quando o driver é aberto.
- Você altera uma fita de vídeo com o definido comando "porta aberta" e as informações de código de tempo estão presentes na fita de vídeo.
- O definido comando "time mode" é reemitido.
Se as informações de timecode não puderem ser encontradas, o driver usará os contadores de fita.
Para determinar o método de posicionamento atual, execute o comando status "time type", que retorna "timecode" ou "counter". Você também pode identificar o modo de posicionamento atual usando o comando status "time mode", que retorna "timecode", "counter" ou "detect".
O comando status "counter" recupera o valor atual do contador de fita, independentemente do método de posicionamento atual; no entanto, você pode usar essa leitura de contador somente com o definir comando "contador".
O driver VISCA pode recuperar o formato de código de tempo nativo gravado em uma fita de vídeo usando os comandos status "timecode type" e status "frame rate" juntos. Por exemplo, se o tipo de código de tempo for "smpte" e a taxa de quadros for 25, o formato de código de tempo nativo gravado na fita de vídeo será SMPTE 25.
O driver VISCA também pode recuperar a resolução do contador usando o status comando "counter resolution", que retorna "seconds" ou "frames". O formato do contador ainda pode ser definido como SMPTE 30, mas o valor de retorno retorna apenas um quadro de 0. Se o tipo de hora atual for contador, essa resolução também se aplica ao valor retornado por status "posição".
Capturando quadros
Os comandos de captura de quadros fornecem imagens estáticas para um dispositivo de captura de quadros . Um dispositivo de captura de quadros é uma peça separada de hardware capaz de ler e armazenar a imagem de vídeo. O driver VISCA suporta o comando freeze (MCI_FREEZE) para estabilizar uma imagem estática para captura. Além disso, o comando unfreeze (MCI_UNFREEZE) pode ser usado para reiniciar o transporte de fita após um comando freeze.
O comando freeze fornece uma imagem de alta qualidade, estabilizada e com base no tempo – corrigida para um dispositivo de captura de quadros. Este comando existe porque um dispositivo pode nem sempre fornecer a sua imagem de saída de qualidade máxima durante a reprodução ou durante a pausa; tal imagem de vídeo não é adequada para captura.
O comando descongelar desbloqueia o transporte de fita e retoma o modo de transporte em vigor antes que o comando congelar.
Quando seu aplicativo precisar gravar uma imagem de vídeo no videocassete, use o comando freeze "input" ou o comando cue (MCI_CUE) para gravar a imagem.
Seleção de entradas
O driver VISCA suporta três tipos de entrada: vídeo, áudio e timecode. As entradas de vídeo incluem dois canais padrão (linhas 1 e 2), um canal SVideo, um canal auxiliar, e um canal de um sintonizador interno. As entradas de áudio incluem dois canais padrão (linhas 1 e 2) e um canal de um sintonizador interno. A entrada do timecode é interna ao videocassete.
As saídas normais carregam as entradas atualmente selecionadas quando o videocassete está gravando ou quando o transporte da fita é interrompido, e carregam o conteúdo da fita de vídeo quando o transporte da fita está sendo reproduzido ou pausado. As saídas monitoradas carregam as mesmas informações que as saídas normais, além do código de tempo atual e informações do canal.
Supondo que as entradas externas apropriadas estão conectadas ao seu videocassete e você decidiu o que deseja gravar, você pode selecionar as entradas a serem gravadas. Por exemplo, para gravar ou visualizar a partir do vídeo "svideo" e das entradas de áudio "linha 1", você usaria os comandos setvideo (MCI_SETVIDEO) e setaudio (MCI_SETAUDIO) para selecionar essas fontes de entrada. Você pode verificar essas seleções usando o comando status (MCI_STATUS).
Por padrão, o monitor mostra exatamente o que aparece como saída. Às vezes, no entanto, você pode querer ver uma fonte enquanto grava de outra. Esta é uma prática comum usando o sintonizador. Por exemplo, você pode querer assistir ao canal 4 enquanto grava o canal 7. Nesse caso, você tem duas entradas de sintonizador lógico. Você pode configurar o videocassete usando os seguintes comandos:
Para rever uma fonte enquanto grava a partir de outra
- Use o comando settuner (MCI_SETTUNER) para selecionar os canais a serem assistidos e gravados.
- Use o comando setvideo para selecionar a fonte de gravação de vídeo.
- Use o comando setaudio para selecionar a fonte de gravação de áudio.
- Use o comando setvideo para rotear a entrada de vídeo do canal 4 para a saída monitorada para exibi-la na tela.
- Use o comando setaudio para rotear a entrada de áudio do canal 4 para a saída monitorada para reproduzir o áudio.
- Verifique suas seleções usando o comando status.
O driver VISCA também suporta um tipo de entrada especial para áudio e vídeo chamado mudo. Mute permite a seleção de "sem entrada", o que é útil ao gravar um sinal em branco.
Seleção de faixas de gravação
Existem três tipos de faixas de gravação em uma fita de vídeo: vídeo, áudio e código de tempo. Você tem apenas uma faixa de vídeo ou timecode, mas pode usar mais de uma faixa de áudio. Quando o fizer, faça da faixa 1 a faixa de áudio principal.
O driver VISCA suporta dois modos de operação: montar e inserir. No modo montagem, todas as faixas são selecionadas para serem gravadas. No modo de inserção , as faixas podem ser selecionadas de forma independente para gravação. A maioria dos videocassetes está no modo de montagem por padrão. Use o comando set (MCI_SET) para alterar esses modos.
Gravação e Edição
O comando record (MCI_RECORD) fornece uma gravação simples e é preciso até aproximadamente 1 segundo da posição inicial. Para gravar com mais precisão, ou se você espera editar o conteúdo do vídeo enquanto opera simultaneamente vários decks, você deve usar o comando cue (MCI_CUE).
O comando cue prepara o dispositivo para gravação ou reprodução. Use o comando cue "input" para preparar o dispositivo para gravação. O comando cue é necessário porque um aplicativo deve saber quando o dispositivo está pronto para executar o comando (e porque pode levar vários minutos para se preparar para um reproduzir (MCI_PLAY) ou gravar comando).
O videocassete prepara-se para gravar ou reproduzir procurando a no ponto, que é a posição atual ou a posição especificada usando o cue comando "from". Se o sinalizador "preroll" for especificado com o comando cue, no entanto, o videocassete posiciona a distância de pré-rolagem do ponto de entrada. O sinalizador "preroll" também indica que o videocassete usa qualquer modo de edição aplicável, por isso é importante que você use "preroll", especialmente quando você deseja a gravação mais precisa. (Use o comando capability (MCI_GETDEVCAPS) com o sinalizador "can preroll" para verificar se o modo preroll é suportado.)
Observação
Quando você grava usando as posições "de" e "para", a posição "de" é incluída na edição e a posição "para" não.
Para obter mais informações sobre gravação, consulte Recording.
Usando o relógio durante a edição
Ao editar, você pode querer gravar segmentos de um videocassete para outro. Você pode começar a gravar em um horário e posição específicos em um videocassete, enquanto outro começa a jogar ao mesmo tempo e posição, especificando uma ação (reproduzir ou gravar), uma posição e um horário para cada videocassete.
Ambos os videocassetes devem usar o mesmo relógio para este tipo de edição; O relógio ajuda a sincronizar ambos os dispositivos. Você pode determinar se dois videocassetes compartilham o mesmo relógio usando o comando status (MCI_STATUS) com o sinalizador "clock id" para consultar cada videocassete. Se os números de identificação retornados pelo comando status forem os mesmos, os dispositivos usam o mesmo relógio. Como um recurso compartilhado, o relógio pode ser conectado a vários videocassetes. O driver VISCA suporta apenas um relógio compartilhado.
Você também pode determinar a resolução do relógio usando o comando status "clock increment rate". Este comando devolve o número de incrementos suportados pelo relógio por segundo. Por exemplo, se o relógio for atualizado a cada milissegundo, o comando retornará 1000 como a taxa de incremento do relógio. A vantagem de usar a taxa de incremento é que a taxa é expressa como um inteiro; caso contrário, o incremento seria um valor de vírgula flutuante (precisão simples ou dupla). Como um inteiro, manipular a taxa de incremento é uma operação simples e não é suscetível a erros de arredondamento. Você pode redefinir o relógio usando o comando set (MCI_SET) com o sinalizador "clock 0" (zero).
Ao emitir um reproduzir (MCI_PLAY), gravar (MCI_RECORD) ou comando seek (MCI_SEEK), você pode especificar quando o comando deve ser executado. As características dos VCRs que estão sendo usados determinam quando iniciar cada VCR. O tempo deve levar em conta a quantidade de pré-rolagem que cada dispositivo requer e a quantidade de tempo necessária para concluir os comandos MCI usados para configurar a sessão de edição. Para fazer isso, recupere o tempo do relógio e adicione um intervalo de espera de 5 a 10 segundos. (O intervalo de espera deve ser longo o suficiente para permitir que o preroll e quaisquer comandos MCI pendentes terminem de ser executados.)
Para garantir que o período de espera é longo o suficiente, coloque o registro comando por último em seu aplicativo e verifique o tempo imediatamente antes dele. Se o intervalo for muito curto, reinicie o comando play. Como alternativa, você pode verificar o tempo imediatamente após o último comando do script para verificar se há tempo suficiente para enviar e concluir todos os comandos.