Запись аудио на определенном уровне Visual C ++ 2008 (32 бит) - PullRequest
0 голосов
/ 03 июля 2011

Я пытаюсь создать программу, которая записывает звук с входного аудиоустройства (пример: микрофон) но только когда сигнал активен (означает только когда кто-то говорит в микрофон) и сохранить его в формате mp3 и я пытался, но это так трудно, пожалуйста, помогите мне

1 Ответ

0 голосов
/ 04 июля 2011

Я знаю способ сделать это, хотя я не уверен, что это лучший способ сделать это: это не обязательно будет легко, если вы не знакомы с DirectShow, так как это требует от вас изучения многих аспектов технология. Вы можете использовать DirectShow для настройки медиа-конвейера, который выглядит примерно так:

Источник захвата -> SampleGrabber -> Audio Renderer

Это простой график воспроизведения. В граббере образцов вы можете перехватывать образцы, когда они проходят через конвейер. Вот, например, вы можете обработать образец, чтобы увидеть, является ли это тишиной или нет. Когда у вас все получится, попробуйте настроить график, который будет выглядеть примерно так

Capture Source -> SampleGrabber -> mp3-кодировщик -> filewriter

Не уверен насчет файлового автора (если это работает для данных в формате mp3): больше домашней работы для вас.

Затем, используя GMFBridge , вы можете настроить несколько графиков.

1) Источник захвата -> SampleGrabber -> GMFBridgeSink 2) GMFBridgeSource -> кодировщик mp3 -> автор файлов 3) GMFBridgeSource -> рендерер (или что-то)

GMFBridge позволяет динамически переключаться между графиками во время воспроизведения. Итак, 1) обычно будет подключен к 3), пока вы не обнаружите определенный уровень звука, затем мосты к 2). Как только уровень звука упадет до 3).

Я не знаю, является ли это лучшим решением, но это решение или отправная точка. Возможно, кто-то еще может предложить другой путь. Удачи.

...