2つのライブ録画チャンネルをストリーミングするには、Debian 10、Darkice、Icecastを使用してストリーミングサーバーを構築したいと思います。
サウンドカードは2つのBehringer UCA202で、常にシステムの同じ物理USBポートに接続されています。 1つは上部USBポートで、もう1つは下部USBポートであるとします。
確認するときミキサー-lサウンドカードの1つの名前はCODEC、もう1つの名前はCODEC_1です。 Darkiceの設定ファイルに適切なチャンネル情報を入力し、Icecastにマウントポイントを割り当てることができます。
したがって、現在、次の構成があります。
上記のUSBカード - >名前はCODEC - > Icecastのマウントポイントstream1
下部USBのカード - >名前はCODEC_1 - > Icecastのマウントポイントstream2です。
問題は、再起動後にデバイスの検索特性によってサウンドカードの名前が変わる場合があることです。 CODECはCODEC_1になり、その逆も同様です。これが発生すると、マウントポイントのストリームも切り替えられ、stream1は間違ったサウンドカードから来ます。
コーデックが常にサウンドカードのUSBポートにあるように、毎回同じ名前を割り当てるにはどうすればよいですか?たぶん一種のudevルールですか?
要求に応じてudevadm info -ap /sys/出力を追加しました。
ここで私たちは出力します。udevadmについて-ap /sys/class/sound/controlC0
looking at device '/devices/pci0000:00/0000:00:1a.1/usb3/3-2/3-2:1.0/sound/card0/controlC0':
KERNEL=="controlC0"
SUBSYSTEM=="sound"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3/3-2/3-2:1.0/sound/card0':
KERNELS=="card0"
SUBSYSTEMS=="sound"
DRIVERS==""
ATTRS{id}=="CODEC_1"
ATTRS{number}=="0"
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3/3-2/3-2:1.0':
KERNELS=="3-2:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="snd-usb-audio"
ATTRS{bInterfaceClass}=="01"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bNumEndpoints}=="00"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{supports_autosuspend}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceProtocol}=="00"
ATTRS{authorized}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3/3-2':
KERNELS=="3-2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{busnum}=="3"
ATTRS{rx_lanes}=="1"
ATTRS{bDeviceProtocol}=="00"
ATTRS{devpath}=="2"
ATTRS{bMaxPower}=="100mA"
ATTRS{maxchild}=="0"
ATTRS{configuration}==""
ATTRS{tx_lanes}=="1"
ATTRS{bcdDevice}=="0100"
ATTRS{product}=="USB Audio CODEC "
ATTRS{bDeviceSubClass}=="00"
ATTRS{speed}=="12"
ATTRS{idVendor}=="08bb"
ATTRS{bmAttributes}=="80"
ATTRS{devnum}=="3"
ATTRS{authorized}=="1"
ATTRS{bNumConfigurations}=="1"
ATTRS{bConfigurationValue}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{idProduct}=="2902"
ATTRS{version}==" 1.10"
ATTRS{bDeviceClass}=="00"
ATTRS{bNumInterfaces}==" 4"
ATTRS{quirks}=="0x0"
ATTRS{removable}=="unknown"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{manufacturer}=="Burr-Brown from TI "
ATTRS{urbnum}=="1331512"
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3':
KERNELS=="usb3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{serial}=="0000:00:1a.1"
ATTRS{urbnum}=="89"
ATTRS{idProduct}=="0001"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{configuration}==""
ATTRS{busnum}=="3"
ATTRS{devnum}=="1"
ATTRS{interface_authorized_default}=="1"
ATTRS{rx_lanes}=="1"
ATTRS{devpath}=="0"
ATTRS{speed}=="12"
ATTRS{bmAttributes}=="e0"
ATTRS{bDeviceClass}=="09"
ATTRS{removable}=="unknown"
ATTRS{product}=="UHCI Host Controller"
ATTRS{version}==" 1.10"
ATTRS{bcdDevice}=="0419"
ATTRS{authorized_default}=="1"
ATTRS{authorized}=="1"
ATTRS{tx_lanes}=="1"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bConfigurationValue}=="1"
ATTRS{ltm_capable}=="no"
ATTRS{idVendor}=="1d6b"
ATTRS{bNumInterfaces}==" 1"
ATTRS{maxchild}=="2"
ATTRS{quirks}=="0x0"
ATTRS{manufacturer}=="Linux 4.19.0-5-amd64 uhci_hcd"
ATTRS{bMaxPower}=="0mA"
looking at parent device '/devices/pci0000:00/0000:00:1a.1':
KERNELS=="0000:00:1a.1"
SUBSYSTEMS=="pci"
DRIVERS=="uhci_hcd"
ATTRS{ari_enabled}=="0"
ATTRS{driver_override}=="(null)"
ATTRS{d3cold_allowed}=="0"
ATTRS{device}=="0x2835"
ATTRS{msi_bus}=="1"
ATTRS{subsystem_device}=="0x2808"
ATTRS{broken_parity_status}=="0"
ATTRS{local_cpulist}=="0-1"
ATTRS{irq}=="21"
ATTRS{subsystem_vendor}=="0x103c"
ATTRS{class}=="0x0c0300"
ATTRS{numa_node}=="-1"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{vendor}=="0x8086"
ATTRS{revision}=="0x02"
ATTRS{enable}=="1"
ATTRS{local_cpus}=="3"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
これが出力ですudevadmについて-ap /sys/class/sound/controlC1
looking at device '/devices/pci0000:00/0000:00:1a.1/usb3/3-1/3-1:1.0/sound/card1/controlC1':
KERNEL=="controlC1"
SUBSYSTEM=="sound"
DRIVER==""
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3/3-1/3-1:1.0/sound/card1':
KERNELS=="card1"
SUBSYSTEMS=="sound"
DRIVERS==""
ATTRS{id}=="CODEC"
ATTRS{number}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3/3-1/3-1:1.0':
KERNELS=="3-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="snd-usb-audio"
ATTRS{bInterfaceClass}=="01"
ATTRS{supports_autosuspend}=="1"
ATTRS{bNumEndpoints}=="00"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bInterfaceSubClass}=="01"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceProtocol}=="00"
ATTRS{authorized}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3/3-1':
KERNELS=="3-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{tx_lanes}=="1"
ATTRS{bMaxPacketSize0}=="8"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{speed}=="12"
ATTRS{product}=="USB Audio CODEC "
ATTRS{version}==" 1.10"
ATTRS{bcdDevice}=="0100"
ATTRS{busnum}=="3"
ATTRS{ltm_capable}=="no"
ATTRS{devnum}=="5"
ATTRS{configuration}==""
ATTRS{devpath}=="1"
ATTRS{manufacturer}=="Burr-Brown from TI "
ATTRS{quirks}=="0x0"
ATTRS{bDeviceSubClass}=="00"
ATTRS{authorized}=="1"
ATTRS{rx_lanes}=="1"
ATTRS{bMaxPower}=="100mA"
ATTRS{bNumInterfaces}==" 4"
ATTRS{maxchild}=="0"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bmAttributes}=="80"
ATTRS{bConfigurationValue}=="1"
ATTRS{urbnum}=="62"
ATTRS{removable}=="unknown"
ATTRS{idProduct}=="2902"
ATTRS{idVendor}=="08bb"
looking at parent device '/devices/pci0000:00/0000:00:1a.1/usb3':
KERNELS=="usb3"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{manufacturer}=="Linux 4.19.0-5-amd64 uhci_hcd"
ATTRS{idVendor}=="1d6b"
ATTRS{devnum}=="1"
ATTRS{bDeviceProtocol}=="00"
ATTRS{interface_authorized_default}=="1"
ATTRS{authorized_default}=="1"
ATTRS{bNumConfigurations}=="1"
ATTRS{bNumInterfaces}==" 1"
ATTRS{product}=="UHCI Host Controller"
ATTRS{ltm_capable}=="no"
ATTRS{rx_lanes}=="1"
ATTRS{removable}=="unknown"
ATTRS{maxchild}=="2"
ATTRS{bMaxPower}=="0mA"
ATTRS{bcdDevice}=="0419"
ATTRS{busnum}=="3"
ATTRS{serial}=="0000:00:1a.1"
ATTRS{bConfigurationValue}=="1"
ATTRS{idProduct}=="0001"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{bmAttributes}=="e0"
ATTRS{authorized}=="1"
ATTRS{quirks}=="0x0"
ATTRS{speed}=="12"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{devpath}=="0"
ATTRS{configuration}==""
ATTRS{urbnum}=="89"
ATTRS{version}==" 1.10"
ATTRS{tx_lanes}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1a.1':
KERNELS=="0000:00:1a.1"
SUBSYSTEMS=="pci"
DRIVERS=="uhci_hcd"
ATTRS{local_cpulist}=="0-1"
ATTRS{driver_override}=="(null)"
ATTRS{irq}=="21"
ATTRS{revision}=="0x02"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{class}=="0x0c0300"
ATTRS{subsystem_vendor}=="0x103c"
ATTRS{enable}=="1"
ATTRS{subsystem_device}=="0x2808"
ATTRS{d3cold_allowed}=="0"
ATTRS{local_cpus}=="3"
ATTRS{ari_enabled}=="0"
ATTRS{msi_bus}=="1"
ATTRS{vendor}=="0x8086"
ATTRS{numa_node}=="-1"
ATTRS{device}=="0x2835"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
答え1
提供されたudevadm情報に基づいて、次のコマンドを使用して2つのデバイスID名を一時的に変更できます。
echo 'CODEC_A' | sudo tee /devices/pci0000:00/0000:00:1a.1/usb3/3-1/3-1:1.0/sound/card1/id
echo 'CODEC_B' | sudo tee /devices/pci0000:00/0000:00:1a.1/usb3/3-2/3-2:1.0/sound/card0/id
新しいエイリアスID名が次に表示されるはずです。
cat /proc/asound/cards
udevルールの場合、「card0」または「card1」を「card?」に置き換えると、udevによって割り当てられたカードIDはカードのインデックス番号を無視し、USB接続にのみ基づいています。
DEVPATH=="/devices/pci0000:00/0000:00:1a.1/usb3/3-1/3-1:1.0/sound/card?", ATTR{id}="CODEC_A"
DEVPATH=="/devices/pci0000:00/0000:00:1a.1/usb3/3-2/3-2:1.0/sound/card?", ATTR{id}="CODEC_B"
詳細については、次のサイトをご覧ください。https://alsa.opensrc.org/Udev