Partilhar via


Amostra de filtro de metrónomo

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, 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.]

Descrição

Este filtro de exemplo mostra como implementar um relógio de referência. O filtro usa a entrada padrão do microfone para ouvir picos de áudio (como cliques, palmas ou tosse), que ele usa para determinar uma taxa de relógio.

Utilização

Crie o projeto de exemplo e copie a DLL de filtro (Metronom.ax) para o diretório do sistema Windows. Execute o arquivo Metronom.reg para registrar a DLL.

Para usar o filtro:

  1. Crie um gráfico de filtro no GraphEdit que renderize um fluxo de vídeo.
  2. Exclua todos os fluxos de áudio renderizados.
  3. Adicione o filtro Metrônomo ao gráfico. Ele aparece na categoria Filtros DirectShow.
  4. Execute o gráfico. O vídeo começará a ser reproduzido à velocidade normal.
  5. Bata as mãos ou use um metrônomo para definir uma nova velocidade.

Notas de programação

Este filtro funciona apenas para vídeo. O renderizador de áudio não é capaz de sincronizar com taxas de clock radicalmente diferentes.

Se bater palmas 92 vezes por minuto (uma vez a cada ~652 ms), o vídeo será reproduzido à taxa normal. Você pode alterar esse padrão alterando o valor da constante BPM em Metronom.cpp.

Se você parar de bater palmas por um período de tempo e, em seguida, começar a bater palmas novamente, você deve começar de novo aproximadamente na mesma velocidade, ou o filtro irá ignorá-lo. Além disso, a taxa de reprodução de vídeo é limitada pela velocidade da CPU. Se você exceder o limite por qualquer período de tempo, o filtro deixará de responder às alterações de tarifa. Se isso acontecer, pare o gráfico e reinicie.

Se você implementar seu próprio relógio, as regras mais importantes é que os relógios de referência não devem retroceder. Ou seja, eles nunca devem relatar um valor de tempo menor do que o valor de tempo anterior.

Download do exemplo

Para baixar os exemplos do SDK do DirectShow, instale a versão mais recente do SDK do Windows.

Este exemplo é instalado no seguinte caminho: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Metronome.

CBaseReferenceClock Classe

Exemplos do DirectShow