我正在尝试创建一个应用程序,它将使用Darkice传输音频,并提供音频流的LED VU表指示。
我已经创建了一张虚拟卡。这张卡被alsamixer,aplay和arecord识别,但我不能将来自usb卡(hw:0,0)的线路输入信号传输到虚拟卡(hw:2,0)。
我已经尝试了几个.asoundrc脚本,我在Q& A以及使用alsa dmix,dsnoop和multi的Google中找到了这些脚本,但到目前为止还没有任何工作。
我目前正在使用一个在一个终端中自动启动的python程序(LED_VU.py),以及在第二个终端中包含Darkice(streamer.diDual.py)的第二个python程序。 LED程序的配置部分是:
### LED VU Meter on RPI ###
#!/usr/bin/env python
import alsaaudio as AA
import audioop
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
#Define physical header pin numbers for 10 LEDs
RPiPins=[11,12,13,15,16,18,22,7,3,5]
#set all pins as output
for pin in RPiPins:
GPIO.setup(pin, GPIO.OUT)
#Set up audio
card = 'hw:0,0'
darkiceDual.cfg的配置部分是:
# Darkice Configuration File - Generated by Streamer
[general]
duration = 0 # duration of encoding, in seconds. 0 means forever
bufferSecs = 5 # size of internal slip buffer in seconds
reconnect = yes # reconnect to server if disconnected
[input]
device = hw:2,0 # alsa usb soundcard device for audio input
sampleRate = 44100 # sample rate in Hz
bitsPerSample = 16 # bits per sample
channel = 2 # channels. 1 = mono, 2 = stereo
我的.asoundrc文件是:
pcm.!default {
type plug
slave.pcm "mdev"
route_policy "duplicate"
}
pcm.mdev {
type multi
slaves.a.pcm "hw:0,0"
slaves.a.channels 2
slaves.b.pcm "dmixer"
slaves.b.channels 2
bindings.0.slave a
bindings.0.channel 0
bindings.1.slave a
bindings.1.channel 1
bindings.2.slave b
bindings.2.channel 0
bindings.3.slave b
bindings.3.channel 1
}
pcm.dmixer {
type dmix
ipc_key 1024
slave {
pcm "hw:2,0"
period_time 0
period_size 1024
buffer_size 4096
rate 44100
channels 2
format S16_LE
}
}
我做错了什么?
如果我使用hw:2,0并且如果我使用hw:0,0(LED_VU.py正在使用它),则流媒体将没有音频并且具有“无法连接”错误。如果我将LED程序的卡设置更改为hw:2,0,LED将锁定并且所有LED指示灯都点亮。
感谢任何帮助!
感谢您的帮助。这两个程序都按预期使用usb line-in。
我现在无法使用alsamixer或amixer。 Pulseaudio现在正在引发这个问题。如果已安装,则LED_VU.py程序将不会运行。当它被卸载时,python程序将运行但不会运行alsamixer。
答案 0 :(得分:0)
显然,您希望从相同的音频数据运行VU表和DarkIce,即您需要允许两个程序共享一个录音设备。
这可以使用dsnoop
插件完成。默认情况下,USB设备已启用。
告诉两个程序从设备default
进行记录。如果重新定义,请尝试使用dsnoop:0
。