Поделиться через


Настройка свойств записи звука

[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Он был заменён MediaPlayer, IMFMediaEngineи аудио- и видеозахватом в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует для нового кода использовать MediaPlayer, IMFMediaEngine и Audio/Video Capture в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Каждый входной контакт в фильтре записи звука предоставляет интерфейс IAMAudioInputMixer. Используйте этот интерфейс для включения или отключения определенных входных данных путем вызова метода IAMAudioInputMixer::put_Enable на контакте. Кроме того, этот интерфейс используется для задания свойств входных данных, таких как бас, высокие частоты и громкость. Если вы собираете несколько входных данных одновременно, вы можете управлять общими басами, высокими частотами и уровнями громкости через интерфейс IAMAudioInputMixer на фильтре.

Доступные частоты выборки и аудиоформаты для записи определяются драйвером. Используйте интерфейс IAMStreamConfig на выводном контакте звукового захватного фильтра, чтобы определить доступные частоты выборки и форматы и задать нужный формат. Фильтр может подключиться вниз к любому фильтру, принимающему тип носителя выходного пина.

Фильтр захвата звука также предоставляет интерфейс IAMBufferNegotiation . Этот интерфейс полезен для управления объемом задержки в предварительной версии звука. По умолчанию фильтр аудиозахвата использует размер буфера половины секунды. Этот размер буфера является оптимальным для захвата, но вызывает половинносекундную задержку предварительного просмотра. Чтобы уменьшить задержку, вызовите метод IAMBufferNegotiation::SuggestAllocatorProperties перед подключением выходного контакта фильтра захвата звука. Этот метод принимает указатель на структуру ALLOCATOR_PROPERTIES. Используйте элемент cbBuffer, чтобы указать размер буфера в байтах. Буфер 80 миллисекунда обычно является безопасным, но буферы из 30 или 40 миллисекунда могут быть достаточно. Если буферы слишком малы, качество звука будет снижено.