Rpi wheezy在usb& amp;假卡

时间:2016-01-23 00:20:57

标签: alsa

我正在尝试创建一个应用程序,它将使用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。

1 个答案:

答案 0 :(得分:0)

显然,您希望从相同的音频数据运行VU表和DarkIce,即您需要允许两个程序共享一个录音设备。

这可以使用dsnoop插件完成。默认情况下,USB设备已启用。

告诉两个程序从设备default进行记录。如果重新定义,请尝试使用dsnoop:0