Пример фильтра Metronome
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Описание
В этом примере фильтра показано, как реализовать эталонные часы. Фильтр использует входные данные микрофона по умолчанию для прослушивания звуковых пиков (например, щелчков, хлопков в руках или кашля), которые используются для определения частоты часов.
Использование
Выполните сборку примера проекта и скопируйте библиотеку DLL фильтра (Metronom.ax) в системный каталог Windows. Запустите файл Metronom.reg, чтобы зарегистрировать библиотеку DLL.
Чтобы использовать фильтр, выполните следующие действия.
- Создайте в GraphEdit граф фильтра, который отрисовывает видеопоток.
- Удалите все отрисованные аудиопотоки.
- Добавьте фильтр Metronome в граф. Он отображается в категории Фильтры DirectShow.
- Запустите граф. Видео начнет воспроизводиться с обычной скоростью.
- Хлопайте в руки или используйте метроном, чтобы установить новую скорость.
Примечания по программированию
Этот фильтр работает только для видео. Отрисовщик звука не может синхронизироваться с радикально разными частотами.
Если вы хлопать 92 раза в минуту (один раз каждые 652 мс), видео будет воспроизводиться с нормальной скоростью. Это значение по умолчанию можно изменить, изменив значение константы BPM
в Metronom.cpp.
Если вы перестаете хлопать в течение определенного периода времени, а затем снова начинаете хлопать, необходимо начать снова примерно с той же скоростью, иначе фильтр проигнорирует это. Кроме того, скорость воспроизведения видео ограничена скоростью ЦП. Если вы превысите ограничение на любой период времени, фильтр перестанет отвечать на изменения скорости. В этом случае остановите граф и перезапустите его.
Если вы реализуете собственные часы, наиболее важными правилами является то, что ссылочные часы не должны идти назад. То есть они никогда не должны сообщать о значении времени меньше предыдущего значения времени.
Скачивание примера
Чтобы скачать примеры пакета SDK DirectShow, установите последнюю версию пакета WINDOWS SDK.
Этот пример устанавливается по следующему пути: [корневой каталог SDK]\Samples\Multimedia\DirectShow\Filters\Metronome.
Связанные темы