一直在为一个项目做一些研究,想知道如何将原始数据从我的 alsa 设备流式传输到 python/C++/java 应用程序。我一直在搞乱 alsaaudio,python 接口,但只能用麦克风做到这一点。我希望只捕获通过卡传来的所有数据(来自 vlc 等应用程序)
有人帮忙解决这个问题吗?
有硬件可以将其输出重新路由回某些捕获设备,但大多数声音设备不支持这一点。
您可以加载snd-aloop 驱动程序并使用multi 插件创建一个虚拟设备,以将输出路由到实际设备和环回设备,但是如果两个设备的采样时钟正在运行,它们很可能会发散太长。
我建议使用文件插件创建一个虚拟设备,通过管道将数据复制到您的应用程序。将以下内容放入/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
。