Condividi tramite


Esempio di filtro metronome

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Descrizione

Questo filtro di esempio illustra come implementare un orologio di riferimento. Il filtro usa l'input del microfono predefinito per ascoltare picchi audio (ad esempio clic, artigli delle mani o tosse), che usa per determinare una frequenza di clock.

Utilizzo

Compilare il progetto di esempio e copiare la DLL del filtro (Metronom.ax) nella directory di sistema di Windows. Eseguire il file Metronom.reg per registrare la DLL.

Per usare il filtro:

  1. Creare un grafico di filtro in GraphEdit che esegue il rendering di un flusso video.
  2. Elimina tutti i flussi audio di cui è stato eseguito il rendering.
  3. Aggiungere il filtro Metronome al grafico. Viene visualizzata nella categoria Filtri DirectShow.
  4. Eseguire il grafico. Il video inizierà a essere riprodotto alla velocità normale.
  5. Clap your hands or use a metronome to set a new speed.

Note sulla programmazione

Questo filtro funziona solo per il video. Il renderer audio non è in grado di eseguire la sincronizzazione con frequenze di clock radicalmente diverse.

Se silap 92 volte al minuto (una volta ogni ~652 ms), il video verrà riprodotto alla velocità normale. È possibile modificare questo valore predefinito modificando il valore della costante BPM in Metronom.cpp.

Se si interrompe il clapping per un periodo di tempo e quindi si avvia di nuovo il clapping, è necessario ricominciare approssimativamente alla stessa velocità o il filtro lo ignorerà. Inoltre, la velocità di riproduzione dei video è limitata dalla velocità della CPU. Se si supera il limite per qualsiasi periodo di tempo, il filtro smetterà di rispondere alle modifiche alla frequenza. In questo caso, arrestare il grafico e riavviarlo.

Se si implementa un orologio personalizzato, le regole più importanti sono che i orologi di riferimento non devono tornare indietro. Ovvero, non devono mai segnalare un valore di ora inferiore al valore dell'ora precedente.

Download dell'esempio

Per scaricare gli esempi di DirectShow SDK, installare la versione più recente di Windows SDK.

Questo esempio viene installato nel percorso seguente: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Metronome.

Classe CBaseReferenceClock

Esempi di DirectShow