模拟麦克风(虚拟麦克风)

我有一个问题,我需要“模拟”麦克风输出。

数据将通过networking传输,解码为PCM,基本上需要写入麦克风 – 然后其他程序可以读取/logging/不pipe。

我一直在读alsa,但是信息很稀less。 该文件插件貌似很有前途 – 我正在考虑将一个命名pipe道作为“infile”,然后我可以从我的应用程序传递数据。 我不能得到它的工作(VLC /大胆只是段错误)。

pcm.testing { type file slave { pcm { type hw card 0 device 0 } } infile "/dev/urandom" format "raw" } 

有没有更好的方法来做到这一点? 对alsa插件(特别是文件插件)的任何build议?

Solutions Collecting From Web of "模拟麦克风(虚拟麦克风)"

你的声音会通过网络,什么会缓存,直到有人想读? 还是会丢弃数据? 一般来说,像下面这样(只是几乎没有测试过)应该作为一个虚拟麦克风工作,但我认为它会一直从设备打开时读取文件,你需要检查它是如何处理文件的结尾。 也许你会尝试使用管道,但然后缓存/丢弃传入的数据需要由应用程序从网络读取处理。

 pcm.virtmic { type file format "raw" slave.pcm "default" file '/dev/null' infile '/dev/urandom' } 

请参阅alsa文档以获取更多选项。

再次,不知道这个工具是否是你真正需要的任务。 如果你可以用'infile'选项来启动一个命令,比如你可以用'file',但是不幸的是你不能…

希望有所帮助。

更新:slave.pcm不能是“空”,但一些真实的设备。 它似乎是用于计时或我不知道,但使用空导致记录过程永远阻止。 这个设备可能会迫使你在给定的采样率,但要小心。 使用“默认”是一个理智的默认值。 infile需要提供具有正确/匹配格式和速率的原始声音数据。 顺便说一句,你可以看看alsa服务器和jackd和其他音响系统和图书馆为您的任务的替代解决方案