【问题标题】:Streaming alsa pcm speaker output from a python application从 python 应用程序流式传输 alsa pcm 扬声器输出
【发布时间】:2013-10-01 15:18:57
【问题描述】:

一直在为一个项目做一些研究,想知道如何将原始数据从我的 alsa 设备流式传输到 python/C++/java 应用程序。我一直在搞乱 alsaaudio,python 界面,但只能用麦克风做到这一点。我希望只捕获通过卡传来的所有数据(来自 vlc 等应用程序)

有人帮忙吗?

【问题讨论】:

  • 你到底想做什么?您是否需要将音频数据也播放到扬声器?
  • 是的,理想情况下,它会像一个守护进程一样运行,只是在后台处理音频。
  • 你的意思是,播放的不是原始数据?
  • 不,只是想将相同的数据绑定到它以将其用于其他应用程序。所以本质上只是绑定到驱动程序中,并将它输出的所有内容流式传输到缓冲区中(但仍然让它播放我的扬声器上流出的任何内容),这样我就可以出于其他原因使用它。

标签: python linux alsa


【解决方案1】:

有硬件可以将其输出重新路由回某些捕获设备,但大多数声音设备不支持这一点。

您可以加载snd-aloop driver 并使用multi plugin 创建一个虚拟设备以将输出路由到实际设备和环回设备,但是如果两个设备的采样时钟可能会发散运行时间过长。

我建议使用file plugin 创建一个虚拟设备,通过管道将数据复制到您的应用程序。 将以下内容放入/etc/asound.conf 或您的~/.asoundrc

pcm.mydevice {
    type plug
    slave.pcm {
        type file
        slave.pcm "hw:0,0"   # or whatever your actual output device is
        file "|/some/where/myapplication"
    }
}

并告诉其他应用程序使用 ALSA 设备mydevice

【讨论】:

    猜你喜欢
    • 2016-06-13
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2017-12-09
    相关资源
    最近更新 更多