我有一个问题,我需要“模拟”麦克风输出.
数据将通过网络传输,解码成PCM,基本上需要写入麦克风 – 其他程序可以读取/记录任何内容.
我一直在阅读alsa,但信息相当稀疏.文件插件看起来很有希望 – 我在想一个命名管道作为“infile”,然后我可以从我的应用程序传递数据.我无法让它工作,但是(vlc / audacity只是segfault).
pcm.testing { type file slave { pcm { type hw card 0 device 0 } } infile "/dev/urandom" format "raw" }
解决方法
你的声音将会流经网络,什么会缓存它,直到有些东西想要阅读?还是将数据丢弃?
一般来说,如下所示(只是几乎不被测试)应该作为一个虚拟麦克风,但我认为它将始终从设备打开时开始读取文件,您需要检查它是如何处理文件结束的.也许你会尝试使用管道,但缓存/丢弃传入的数据需要由应用程序从网络读取处理.
一般来说,如下所示(只是几乎不被测试)应该作为一个虚拟麦克风,但我认为它将始终从设备打开时开始读取文件,您需要检查它是如何处理文件结束的.也许你会尝试使用管道,但缓存/丢弃传入的数据需要由应用程序从网络读取处理.
pcm.virtmic { type file format "raw" slave.pcm "default" file '/dev/null' infile '/dev/urandom' }
有关更多选项,请参阅alsa docs.
再次,不知道这个工具是你真正需要的任务.如果您可以使用“infile”选项启动命令,那么真的很漂亮,就像你可以使用’file’一样,但是不幸的是你不能…
希望有帮助.
更新:slave.pcm不能是“null”,而是一些真正的设备.这似乎是用于定时,或者我不知道,但使用null会导致录像机进程永久阻止.该设备可能会强制您以给定的采样率,但要小心.使用“默认”是一个理想的默认值. infile需要提供具有正确/匹配格式和速率的原始声音数据. btw你可以看看alsa服务器和jackd和其他音响系统和库为您的任务的替代解决方案