Delen via


Metronome-filtervoorbeeld

[De functie die is gekoppeld aan deze pagina, DirectShow, is een verouderde functie. Het is vervangen door MediaPlayer, IMFMediaEngineen Audio/Video Capture in Media Foundation. Deze functies zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken MediaPlayer, IMFMediaEngine en Audio/Video Capture in Media Foundation in plaats van DirectShow, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]

Beschrijving

Dit voorbeeldfilter laat zien hoe u een verwijzingsklok implementeert. Het filter gebruikt uw standaardmicrofooninvoer om te luisteren naar audiopieken (zoals klikken, handklapjes of hoesten), die worden gebruikt om een kloksnelheid te bepalen.

Gebruik

Bouw het voorbeeldproject en kopieer de filter-DLL (Metronom.ax) naar uw Windows-systeemmap. Voer het Metronom.reg-bestand uit om het DLL-bestand te registreren.

Het filter gebruiken:

  1. Bouw een filtergrafiek in GraphEdit waarmee een videostream wordt weergegeven.
  2. Verwijder alle gerenderde audiostreams.
  3. Voeg het Metronome-filter toe aan de grafiek. Deze wordt weergegeven in de categorie DirectShow-filters.
  4. Voer de grafiek uit. De video wordt op normale snelheid afgespeeld.
  5. Klap uw handen of gebruik een metronoom om een nieuwe snelheid in te stellen.

Programmeernotities

Dit filter werkt alleen voor video. De audio-renderer kan niet worden gesynchroniseerd met radicale verschillende kloksnelheden.

Als u 92 keer per minuut klapt (één keer per ~652 ms), wordt de video met de normale snelheid afgespeeld. U kunt deze standaardinstelling wijzigen door de waarde van de constante BPM in Metronom.cpp te wijzigen.

Als u het klappen gedurende een bepaalde periode stopt en vervolgens opnieuw begint te klappen, moet u opnieuw beginnen met ongeveer dezelfde snelheid, of het filter negeert het. Bovendien wordt de afspeelsnelheid van de video beperkt door de CPU-snelheid. Als u de limiet voor een bepaalde tijdsduur overschrijdt, reageert het filter niet meer op snelheidswijzigingen. Als dit gebeurt, stopt u de grafiek en start u deze opnieuw.

Als u uw eigen klok implementeert, zijn de belangrijkste regels dat verwijzingsklokken niet naar achteren mogen gaan. Dat wil gezegd, ze mogen nooit een tijdwaarde rapporteren die kleiner is dan de vorige tijdwaarde.

Het voorbeeld downloaden

Als u de DirectShow SDK-voorbeelden wilt downloaden, installeert u de nieuwste versie van de Windows SDK.

Dit voorbeeld wordt geïnstalleerd onder het volgende pad: [SDK Root]\Samples\Multimedia\DirectShow\Filters\Metronome.

CBaseReferenceClock-klasse

Voorbeelden van DirectShow