snd_pcm_openに「default」以外にどのデバイス名を指定する必要がありますか?

snd_pcm_openに「default」以外にどのデバイス名を指定する必要がありますか?

両方のデバイスのサウンドを同時に録音したいです。

  • 内蔵マイク
  • 外部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仕様に従って同時に文書化できるように、上記のデバイスに正しい名前を付ける必要がありますか?

いいえAPIを使用したいですpulseaudio

答え1

私の考えの問題front:別の問題front:はマイクや録音機器ではなくスピーカーのセットを表しているため、機能しません。その形式を使用できますが、提案さhw:CARD=X,Yれているように@CLを使用すると、plughw:CARD=X,YPlughwは自動的にリサンプリングまたは値変換を処理できますhw:CARD=X,Y

あなたの結果に基づいて、次のことを行いarecord -lますarecord -L

  • 内部マイクはplughw:DEV=0,CARD=PCH次のようになります。またはplughw:PCH,0
  • USBウェブカメラはplughw:DEV=0,CARD=U0x46d0x825次のようにする必要があります。plughw:U0x46d0x825,0

答え2

Pulseaudio と ALSA を同時に実行すると、Pulseaudio は次のような構成を使用してデフォルトで互換性レイヤーを提供します.

pcm.!default pulse
ctl.!default pulse

つまり、デバイスを使用している場合、snd_pcm_openPulseaudiodefaultと会話すると、アプリケーション名に保存されているデフォルト設定に従ってパスが指定されます。

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

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

(1)Pulseaudioを完全に停止してから、snd_pcm_open任意の方法でALSAデバイスを開き、CARDデバイスを識別するなどの方法を使用できます。

(2) Pulseaudio APIを使用してください。

(3)ALSAまたはPulseaudioで2つのサウンドカード用のコンボデバイスを作成し、それをアプリケーションのデフォルトの受信機として手動で設定し、Pulseaudio互換レイヤーを使用しますdefault

答え3

走りましょう

$ 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

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

関連情報