「デフォルト」以外のsnd_pcm_openで指定する必要があるデバイス名


8

2台のデバイスから同時に音声を録音したい:

  • 内蔵マイク
  • 外部USBウェブカメラマイク

pulseaudioサウンドコントローラーを使用して、これらのデバイスのいずれかをデフォルトとして設定し、でサウンドを録音できましたsnd_pcm_open(&handle, "default", SND_PCM_STREAM_CAPTURE, 0)

しかし、今は両方のデバイスから同時にサウンドを録音したいので、ここで説明されている命名方式を選択する必要があります。しかし、私はそれらのいくつかで成功していません。

これで問題は解決すると思いましたfront:CARD=U0x46d0x825,DEV=0、デバイスの名前としては役に立ちませんでした。

私はこれらのエラーを受け取ります:

ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM
ALSA lib pcm_hw.c:1667:(_snd_pcm_hw_open) Invalid value for card

arecord -l 私に与える:

# arecord -l
**** List of CAPTURE Hardware Devices ****
Home directory not accessible: Permission denied
card 0: PCH [HDA Intel PCH], device 0: ALC662 rev1 Analog [ALC662 rev1 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 2: ALC662 rev1 Alt Analog [ALC662 rev1 Alt Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: U0x46d0x825 [USB Device 0x46d:0x825], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

そして# arecord -L与える:

# arecord -L
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
default:CARD=PCH
    HDA Intel PCH, ALC662 rev1 Analog
    Default Audio Device
sysdefault:CARD=PCH
    HDA Intel PCH, ALC662 rev1 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Front speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Direct sample mixing device
dmix:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Direct sample snooping device
hw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev1 Analog
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=2
    HDA Intel PCH, ALC662 rev1 Alt Analog
    Hardware device with all software conversions
default:CARD=U0x46d0x825
    USB Device 0x46d:0x825, USB Audio
    Default Audio Device
sysdefault:CARD=U0x46d0x825
    USB Device 0x46d:0x825, USB Audio
    Default Audio Device
front:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Front speakers
surround40:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    4.0 Surround output to Front and Rear speakers
surround41:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    IEC958 (S/PDIF) Digital Audio Output
dmix:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Direct sample mixing device
dsnoop:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Direct sample snooping device
hw:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Direct hardware device without any conversions
plughw:CARD=U0x46d0x825,DEV=0
    USB Device 0x46d:0x825, USB Audio
    Hardware device with all software conversions

では、ALSA仕様に従って、同時に記録するために上記のデバイスに入力する必要がある正しい名前は何ですか?

私はしません使用したいpulseaudioAPIを。


マルチプラグインをご覧ください。ただし、デバイスのクロックが同期されていない場合、これは長く機能しません。
CL。

@CL。ストリームを混ぜたくありません。2つの入力を同時に別の期間バッファーにキャプチャしたいだけです。
Necktwi、2014年

1
試してみてくださいdefault:0default:1
CL。

default:0とdefault:1の両方で次のエラーが発生しましたALSA lib conf.c:4694:(snd_config_expand) Unknown parameters 1 ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM default:1
Necktwi

1
どうやら、PAはデフォルトのデバイスをオーバーライドします。試してみてくださいplughw:0plughw:1
CL。

回答:


1

PulseaudioとALSAの両方を実行すると、Pulseaudioがデフォルトとして互換性レイヤーを提供し、

pcm.!default pulse
ctl.!default pulse

つまりsnd_pcm_opendefaultデバイスの場合、Pulseaudioに話しかけると、Pulseaudioがアプリケーション名用に保存されている設定に従ってルーティングします。

Pulseaudioは、ALSAデバイスを使用するときにも開きます。ALSAhwデバイスは1回しか開くことができないため、Pulseaudioがデバイスを開いた直後に、ALSA APIを介してアクセスしようとすると、「ビジー」エラーが発生します。これはfrontplughwなどの自動的に提供されるプラグインにも当てはまりますplughw。Pulseaudioが試したときにプラグインをまだ開いていなかったため、使用を中止しました。これは一般的に機能しません。

次のオプションがあります。

(1)Pulseaudioを完全に停止すると、ALSAデバイスを開くことができます snd_pcm_open、好きな方法でCARD、デバイスを識別するなどに使用できます。

(2)Pulseaudio APIを使用します。

(3)ALSAまたはPulseaudioで2つのサウンドカード用の複合デバイスを作成し、これをアプリケーションの優先シンクとして手動で設定してから、を介してPulseaudio互換性レイヤーを使用しdefaultます。


0

走ってみる

$ cat /proc/asound/devices
  1:        : sequencer
  2: [ 0- 3]: digital audio playback
  3: [ 0- 0]: digital audio playback
  4: [ 0- 0]: digital audio capture
  5: [ 0- 3]: hardware dependent
  6: [ 0- 0]: hardware dependent
  7: [ 0]   : control
 33:        : timer

ゼロ以外のデバイス番号を持つ最初のオーディオデバイスを使用する


0

問題は、他の質問front:からfront:マイクや録音デバイスではなくスピーカーのセットを参照しているため、機能しなかったということです。このhw:CARD=X,Y形式を使用することもできますが、@ CLが示唆するようにを使用すると、柔軟性が少し向上しますplughw:CARD=X,Y。Plughwは、と比較して、自動的にリサンプリングまたは値変換を処理できますhw:CARD=X,Y

arecord -lおよびからの出力に基づいてarecord -L

  • 内蔵マイクは:plughw:DEV=0,CARD=PCH、または単にplughw:PCH,0
  • USB Webcamは次のようになります:plughw:DEV=0,CARD=U0x46d0x825または単にplughw:U0x46d0x825,0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.