Я наткнулся на некоторый код, чтобы перечислить мои микрофонные устройства (с некоторой помощью), и я могу получить информацию о «дружественном имени» и «clsid» с каждого устройства.
Я немного поработал с GraphEd.exe, чтобы попытаться выяснить, как я могу взять аудио из directshow и записать его в файл (в настоящее время меня не интересует формат, wav должен быть в порядке), и не могу показаться найти правильную комбинацию.
Одна из статей, которые я прочитал, связана с этот пример Windows SDK, но когда я изучил код, я в конце концов запутался в том, как использовать этот код, т.е. настройка выходного файла или указание используемого устройства захвата звука.
Я тоже наткнулся на статья о кодегуру у него есть хорошо оснащенный аудио-рекордер, но у него нет интерфейса для выбора аудиоустройства, и я не могу найти, где он статически выбирает, какое записывающее устройство использовать.
Думаю, мне было бы интересно выяснить, как использовать образец Windows SDK, но любое объяснение любого из этих двух подходов было бы фантастическим.
редактироватьЯ должен упомянуть, что мои знания и способности как COM-программиста win32 очень низки в масштабе, поэтому, если это легко, просто объясните мне, как мне пять лет, пожалуйста.
Для записи аудио в файл с помощью DirectShow требуется построить правильный график фильтра, как вы уже должны были это выяснить. Части включают в себя:
Хитрый момент # 2, так как нет доступных стандартных компонентов. Однако примеры Windows SDK содержат недостающую часть — Пример фильтра WavDest. Собрав его и подготовив к использованию, вы можете построить график, который записывает данные с устройства в файл .WAV.
Ваш график будет выглядеть следующим образом, и он также легко создается программно:
Я заметил, что у меня есть вариант WavDest, установленный с Google Earth — на случай, если у вас возникнут проблемы с его сборкой самостоятельно, и вы будете искать готовый двоичный файл.
Вы можете настроить ffmpeg на запись с устройства DirectShow и вывод в файл.