Compartilhar via


Serviços vcr

[O recurso associado a esta página, mci, é um recurso herdado. Foi substituído por MediaPlayer. MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use mediaplayer em vez de mci, quando 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 vcr por meio de um driver de dispositivo baseado no conjunto de comandos MCI para VCRs. Esta seção descreve o driver VISCA (Arquitetura de Controle do Sistema de Vídeo) do MCI e explica como usá-lo para controlar um VCR.

O vcr controles VCRs. Para obter uma lista dos comandos MCI reconhecidos por dispositivos VCR, consulte conjunto de comandos vcr.

O driver DO VISCA do MCI

O driver MCI VISCA controla VCRs compatíveis com o VISCA da Sony, como o VDeck CVD-1000. O driver VISCA controla o transporte de fita, os sintonizadores de canal e os canais de entrada e saída do VCR.

Pesquisando e posicionando com um VCR

O driver visca usa dois métodos para controlar 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 VCRs 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 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 passa do início ao fim. Devido à sua precisão, usar 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 "busca". (Além disso, o status comando "position" retorna seu valor de tempo no formato de tempo atual.)

O driver VISCA usa o comando set "modo de tempo" para selecionar o tipo de posicionamento a ser usado com uma fita de vídeo. Quando o modo de hora é definido como "timecode", o status "posição" e definir comandos de "formato de tempo" usam o código de tempo na fita de vídeo. Quando o modo de hora é definido como "contador", o status "posição" e definir comandos de "formato de tempo" usam contadores.

Um aplicativo pode definir o modo de tempo para "detectar" se não importa que possa haver duas fontes de informações de posição. Quando estiver no modo de detecção, o driver VISCA usa informações de código de tempo para posicionamento quando ocorrem qualquer uma das seguintes condições:

  • As informações de código de tempo estão presentes quando o driver é aberto.
  • Você altera uma fita de vídeo com o definido comando "abrir porta" e as informações de código de tempo estão presentes na fita de vídeo.
  • O comando definido "modo de tempo" é relançado.

Se informações de código de tempo não puderem ser encontradas, o driver usará os contadores de fita.

Para determinar o método de posicionamento atual, emita o status comando "tipo de tempo", que retorna "timecode" ou "counter". Você também pode identificar o modo de posicionamento atual usando o status comando "modo de tempo", que retorna "timecode", "counter" ou "detect".

O status comando "contador" recupera o valor do contador de fita atual, independentemente do método de posicionamento atual; no entanto, você pode usar essa leitura de contador somente com o comando set "counter".

O driver VISCA pode recuperar o formato de código de tempo nativo gravado em uma fita de vídeo usando o status "tipo de código de tempo" e status comandos de "taxa de quadros" 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 registrado na fita de vídeo será SMPTE 25.

O driver VISCA também pode recuperar a resolução do contador usando o status comando "contra resolução", que retorna "segundos" ou "quadros". O formato do contador ainda pode ser definido como SMPTE 30, mas o valor retornado retorna apenas um quadro de 0. Se o tipo de hora atual for contador, essa resolução também se aplicará ao valor retornado por status "posição".

Capturando quadros

Os comandos de captura de quadro fornecem imagens para um dispositivo de captura de quadros . Um dispositivo de captura de quadros é uma parte separada do hardware capaz de ler e armazenar a imagem de vídeo. O driver VISCA dá suporte ao comando freeze (MCI_FREEZE) para estabilizar uma imagem parada para captura. Além disso, o comando descongelar (MCI_UNFREEZE) pode ser usado para reiniciar o transporte de fita após um comando congelar.

O comando congelar fornece uma imagem de alta qualidade, estabilizada e com base no tempo – corrigida para um dispositivo de captura de quadros. Esse comando existe porque um dispositivo pode nem sempre fornecer 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 o aplicativo precisar gravar uma imagem de vídeo no VCR, use o comando congelar "entrada" ou o comando (MCI_CUE) para gravar a imagem.

Selecionando entradas

O driver VISCA dá suporte a três tipos de entrada: vídeo, áudio e código de tempo. 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 ajuste interno. As entradas de áudio incluem dois canais padrão (linhas 1 e 2) e um canal de um ajuste interno. A entrada de código de tempo é interna para o VCR.

As saídas normais carregam as entradas selecionadas no momento quando o VCR está gravando ou quando o transporte de fita é interrompido e carregam o conteúdo da fita de vídeo quando o transporte de 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 das informações de canal.

Supondo que as entradas externas apropriadas estejam conectadas ao seu VCR e você tenha decidido o que deseja gravar, selecione as entradas a serem gravadas. Por exemplo, para gravar ou exibir 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 comandode status(MCI_STATUS).

Por padrão, o monitor mostra exatamente o que aparece como a saída. Às vezes, no entanto, talvez você queira exibir uma fonte durante a gravação de outra. Essa é uma prática comum usando o ajuste. Por exemplo, talvez você queira assistir ao canal 4 enquanto grava o canal 7. Nesse caso, você tem duas entradas de ajuste lógico. Você pode configurar o VCR usando os seguintes comandos:

Para examinar uma fonte durante a gravação de outra

  1. Use o comando settuner (MCI_SETTUNER) para selecionar os canais a serem observados e registrados.
  2. Use o comando setvideo para selecionar a origem da gravação de vídeo.
  3. Use o comando setaudio para selecionar a origem da gravação de áudio.
  4. Use o comando setvideo para rotear a entrada de vídeo do canal 4 para a saída monitorada para exibi-la na tela.
  5. Use o comando setaudio para rotear a entrada de áudio do canal 4 para a saída monitorada para reproduzir o áudio.
  6. Verifique suas seleções usando o comandode status.

O driver VISCA também dá suporte a um tipo de entrada especial para áudio e vídeo chamado mudo. O mudo permite a seleção de "sem entrada", o que é útil ao gravar um sinal em branco.

Selecionando 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 um vídeo ou faixa de código de tempo, mas pode usar mais de uma faixa de áudio. Ao fazer isso, torne a faixa 1 a faixa de áudio principal.

O driver VISCA dá suporte a dois modos operacionais: montar e inserir. No modo de montagem , todas as faixas são selecionadas para serem gravadas. No modo de inserção , as faixas podem ser selecionadas independentemente para gravação. A maioria dos VCRs 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 registro (MCI_RECORD) fornece uma gravação simples e é preciso para aproximadamente 1 segundo da posição inicial. Para gravar com mais precisão ou se você espera editar o conteúdo do vídeo ao operar simultaneamente vários decks, use o comando (MCI_CUE).

O comando prepara o dispositivo para gravação ou reprodução. Use a indicação comando de "entrada" para preparar o dispositivo para gravação. O comando indicação é necessário porque um aplicativo deve saber quando o dispositivo está pronto para executar o comando (e como pode levar vários minutos para se preparar para um executar (MCI_PLAY) ou comando de registro).

O VCR se prepara para gravar ou reproduzir buscando a no ponto, que é a posição atual ou a posição especificada usando o comando "from". Se o sinalizador "pré-registro" for especificado com o comando indicação, no entanto, o VCR se posicionará a distância de pré-registro do ponto. O sinalizador "pré-registro" também indica que o VCR usa qualquer modo de edição aplicável, portanto, é importante que você use "pré-registro", especialmente quando desejar a gravação mais precisa. (Use o comandode funcionalidade de(MCI_GETDEVCAPS) com o sinalizador "pode pré-registrar" para verificar se o modo de pré-registro tem suporte.)

Nota

Quando você grava usando 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 Gravação.

Usando o relógio durante a edição

Ao editar, talvez você queira gravar segmentos de um VCR para outro. Você pode começar a gravar em um momento específico e posicionar em um VCR enquanto outro começa a ser reproduzido ao mesmo tempo e posição especificando uma ação (reprodução ou gravação), uma posição e um tempo para cada VCR.

Ambos os VCRs devem usar o mesmo relógio para esse tipo de edição; o relógio ajuda a sincronizar ambos os dispositivos. Você pode determinar se dois VCRs compartilham o mesmo relógio usando o comando status (MCI_STATUS) com o sinalizador "id do relógio" para consultar cada VCR. Se os números de identificação retornados pelo status comando forem os mesmos, os dispositivos usarão o mesmo relógio. Como um recurso compartilhado, o relógio pode ser conectado a vários VCRs. O driver VISCA dá suporte a apenas um relógio compartilhado.

Você também pode determinar a resolução do relógio usando o status comando "taxa de incremento do relógio". Esse comando retorna o número de incrementos que o relógio dá suporte 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 ponto flutuante (de precisão única 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 umde reprodução(MCI_PLAY), de registro (MCI_RECORD) ou procurar (MCI_SEEK) comando, 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 considerar a quantidade de pré-registro que cada dispositivo requer e o tempo necessário 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 pré-registro e todos os comandos MCI pendentes terminem de ser executados.)

Para garantir que o período de espera seja longo o suficiente, coloque o registro comando por último em seu aplicativo e verifique a hora imediatamente antes dele. Se o intervalo for muito curto, reinicie o comando reproduzir. Como alternativa, você pode verificar a hora imediatamente após o último comando do script para verificar se há tempo suficiente para enviar e concluir todos os comandos.