首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟麦克风(虚拟麦克风)

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

Stack Overflow用户
提问于 2011-01-03 07:00:00
回答 1查看 5.8K关注 0票数 12

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

数据将通过网络传入,解码到PCM中,基本上需要写入麦克风-然后其他程序可以读取/记录/任何东西。

我一直在研究alsa,但信息非常稀少。文件插件seemes很有希望--我正在考虑有一个命名管道作为"infile“,然后我可以将数据从我的应用程序传递到它。然而,我不能让它工作(vlc/audacity只是segfault)。

代码语言:javascript
复制
pcm.testing {
  type file
  slave {
    pcm {
      type hw
      card 0
      device 0
    }
  }
  infile "/dev/urandom"
  format "raw"
}

有没有更好的方法来做到这一点?对alsa插件(特别是文件插件)有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2012-09-28 20:44:47

你的声音会通过网络传过来,在有东西想要读之前,什么东西会缓存它呢?或者数据会被丢弃吗?一般来说,像下面这样的东西(只是刚刚测试过)应该可以作为虚拟麦克风工作,但我认为当设备打开时,它总是会从开始读取文件,你需要检查它是如何处理文件结尾的。也许你会尝试使用管道,但是缓存/丢弃传入的数据需要由从网络读取的应用程序来处理。

代码语言:javascript
复制
pcm.virtmic {
    type file
    format "raw"
    slave.pcm "default"
    file '/dev/null'
    infile '/dev/urandom'
}

有关更多选项,请参阅alsa docs

再说一次,我不确定这个工具是否是你真正需要的。如果你能用'infile‘选项启动一个命令就好了,就像你能用'file’启动命令一样,但不幸的是你不能……

希望这能有所帮助。

更新: slave.pcm不能是"null“,而是一些真实的设备。它似乎是用于计时的,或者我不知道,但是使用null会导致记录器进程永远阻塞。但是,此设备可能会强制您使用给定的采样率,因此要小心。使用" default“是一个合理的默认值。infile需要提供具有正确/匹配格式和速率的原始声音数据。顺便说一句,您可以查看alsa服务器和jackd以及其他声音系统和库,以获得任务的替代解决方案。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4580986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档