Вывод аудиопотока на микрофон

Всем привет. Есть ли способ вывести звук из моей программы и перенаправить этот поток на «слой» ввода микрофона системы? Я понимаю, что это может потребовать некоторых низкоуровневых вызовов, которые будут «Pinvoked», но есть ли какие-либо статьи, которые могут мне помочь. Например, если бы мне нужно было запустить выходной аудиопоток моего приложения в программу Windows Sound Recorder, она подумала бы, что звук идет с микрофона, и, таким образом, записала бы его. Я не хочу записывать поток, просто вывожу его на микрофонный вход устройства. Спасибо за любые идеи.


person Brap    schedule 03.12.2010    source источник
comment
Вы можете использовать регулятор громкости записи, чтобы включить звук WaveMix на большинстве звуковых карт. Но это глобальное состояние, а не для каждой программы.   -  person CodesInChaos    schedule 04.12.2010
comment
Не лучше ли зарегистрировать ваше приложение в качестве дополнительного микрофона в Windows? Таким образом, вы не перехватываете функциональность какого-либо оборудования, и ваш пользователь может свободно выбирать ваше приложение в качестве своего (виртуального) устройства ввода. У меня нет личного опыта в этом, но это кажется более логичным подходом.   -  person Nathan Taylor    schedule 04.12.2010
comment
почему бы просто не использовать микшер в качестве входа? это требование, чтобы это был микрофон?   -  person jcomeau_ictx    schedule 04.12.2010
comment
Извините, я новичок в управлении звуком. Я предположил, что мне придется заменить микрофон, потому что его может использовать любая другая программа в системе пользователя. Например, если пользователь использовал Live messenger и разговаривал через микрофон, я хотел бы, чтобы моя программа выводила звук и подавала его на микрофон Live messenger. Я не против регистрации в качестве дополнительного микрофона (я не знал, что это возможно без аппаратного обеспечения)   -  person Brap    schedule 04.12.2010
comment
@Brap есть разумная вероятность того, что создание «виртуального микрофона» значительно выйдет за рамки .NET. Я потратил последние десять минут на гугление примеров, и все, что я придумал, это: software.muzychenko.net/eng/vac.htm.   -  person Nathan Taylor    schedule 04.12.2010
comment
@ Натан Ты прав, это выглядит очень глубоко. Я покопаюсь в этой идее, вдруг что-то всплывёт. Если нет, буду рад любым другим советам. Спасибо за помощь.   -  person Brap    schedule 04.12.2010


Ответы (6)


Я использовал Виртуальный аудиокабель именно для этой цели!

person Daniel Mošmondor    schedule 29.12.2010

Я использовал VB-CABLE (который работает как драйвер аудиоустройства, а не внешнее программное обеспечение), чтобы делать именно то, что вы хотите.

https://www.vb-audio.com/Cable/index.htm

Одно устройство ввода/вывода бесплатно и 2 дополнительных устройства могут быть добавлены за пожертвование.

person jj_    schedule 30.10.2020

Попробуйте изучить Pure Data (ПК) или Max MSP (Mac) для решения этой проблемы.

person smartcaveman    schedule 28.12.2010

Похоже, вы ищете виртуальный аудиодрайвер. Вы можете приобрести программное обеспечение у Softonic, которое уже делает это. Если вам нужно создать его самостоятельно, вы можете управлять этим с помощью DirectSound (часть DirectX библиотека) от Microsoft.

person k rey    schedule 29.12.2010

если у вас все в порядке с записью через VLC и вы используете Vista+, тогда этот https://github.com/rdp/virtual-audio-capture-grabber-device может помочь

person rogerdpack    schedule 14.09.2011

Если ваше приложение может получить доступ к VST, вы можете использовать червоточину 2, которая имеет открытый исходный код и работает для Mac и ПК. Он может отправлять и получать аудио на хосте, совместимом с VST. http://code.google.com/p/wormhole2/

Если нет, по крайней мере, на Mac есть Soundflower от Cycling74, который устанавливает структуру для аудиовходов и выходов, доступных во всей системе. Cycling74.com/soundflower-landing-page/

В качестве эквивалента на ПК есть: http://jackaudio.org/, который в основном делает то же самое, что и Soundflower.

person meeee    schedule 14.06.2013