PulseAudioカードの複数のポート/プロファイルに固有のオーディオを出力するには?

PulseAudioカードの複数のポート/プロファイルに固有のオーディオを出力するには?

次の属性を持つカードがあるとしましょう。

index: 1
name: <alsa_card.pci-0000_00_1f.3>
driver: <module-alsa-card.c>
owner module: 7
properties:
    alsa.card = "0"
    alsa.card_name = "HDA Intel PCH"
    alsa.long_card_name = "HDA Intel PCH at 0xf7240000 irq 129"
    alsa.driver_name = "snd_hda_intel"
    device.bus_path = "pci-0000:00:1f.3"
    sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
    device.bus = "pci"
    device.vendor.id = "8086"
    device.vendor.name = "Intel Corporation"
    device.product.id = "a170"
    device.form_factor = "internal"
    device.string = "0"
    device.description = "Built-in Audio"
    module-udev-detect.discovered = "1"
    device.icon_name = "audio-card-pci"
profiles:
    input:analog-stereo: Analog Stereo Input (priority 60, available: unknown)
    output:analog-stereo: Analog Stereo Output (priority 6000, available: unknown)
    output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6060, available: unknown)
    output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5400, available: unknown)
    output:hdmi-stereo+input:analog-stereo: Digital Stereo (HDMI) Output + Analog Stereo Input (priority 5460, available: unknown)
    output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 300, available: unknown)
    output:hdmi-surround+input:analog-stereo: Digital Surround 5.1 (HDMI) Output + Analog Stereo Input (priority 360, available: unknown)
    output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 300, available: unknown)
    output:hdmi-surround71+input:analog-stereo: Digital Surround 7.1 (HDMI) Output + Analog Stereo Input (priority 360, available: unknown)
    output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5200, available: unknown)
    output:hdmi-stereo-extra1+input:analog-stereo: Digital Stereo (HDMI 2) Output + Analog Stereo Input (priority 5260, available: unknown)
    output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (priority 5200, available: unknown)
    output:hdmi-stereo-extra2+input:analog-stereo: Digital Stereo (HDMI 3) Output + Analog Stereo Input (priority 5260, available: unknown)
    output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (priority 100, available: unknown)
    output:hdmi-surround-extra2+input:analog-stereo: Digital Surround 5.1 (HDMI 3) Output + Analog Stereo Input (priority 160, available: unknown)
    output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (priority 100, available: unknown)
    output:hdmi-surround71-extra2+input:analog-stereo: Digital Surround 7.1 (HDMI 3) Output + Analog Stereo Input (priority 160, available: unknown)
    off: Off (priority 0, available: unknown)
active profile: <output:hdmi-stereo-extra1+input:analog-stereo>
sinks:
    alsa_output.pci-0000_00_1f.3.hdmi-stereo-extra1/#1: Built-in Audio Digital Stereo (HDMI 2)
sources:
    alsa_output.pci-0000_00_1f.3.hdmi-stereo-extra1.monitor/#1: Monitor of Built-in Audio Digital Stereo (HDMI 2)
    alsa_input.pci-0000_00_1f.3.analog-stereo/#2: Built-in Audio Analog Stereo
ports:
    analog-input-headphone-mic: Microphone (priority 8700, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-input-microphone"
    analog-input-headset-mic: Headset Microphone (priority 8700, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-input-microphone"
    analog-output-lineout: Line Out (priority 9900, latency offset 0 usec, available: no)
        properties:

    analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
        properties:
            device.icon_name = "audio-speakers"
    analog-output-headphones: Headphones (priority 9000, latency offset 0 usec, available: yes)
        properties:
            device.icon_name = "audio-headphones"
    hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
        properties:
            device.icon_name = "video-display"
    hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: yes)
        properties:
            device.icon_name = "video-display"
            device.product.name = "Inspiron 7459"
    hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
        properties:
            device.icon_name = "video-display"

独自のオーディオストリームをアナログ出力ライン出力し、可能であればすべてのポート(hdmi-output-0、hdmi-output-1、hdmi-output2):ポートに出力したいと思います。 PulseAudioで両方を行う方法はありますか?私はALSAで次のことができることを知っています。

gst-launch-1.0 audiotestsrc ! alsasink device="hw:0,0" gst-launch-1.0 audiotestsrc ! alsasink device="hw:0,3"

しかし、Pulseで見た内容によると、「カード」の「プロファイル」を設定する必要があり、すべてのプロファイルが出力ポートにバインドされているようです。

これを行う方法はありますか?それともPulseはこれに関して根本的に制限されていますか?

ベストアンサー1

必要なすべてのHDMI出力を別々のシンクとして公開するカスタム設定ファイルを作成する必要があります。

見るはじめにPulseaudioドキュメントのファイル/usr/share/pulseaudio/alsa-mixer/paths/、特に。analog-output.conf.commonでコメント

残念ながら、これらの内容はすべて正しく文書化されていません。


動作させる:

/usr/share/pulseaudio/alsa-mixer/profile-sets/default.conf次の内容を修正して追加します。

[Profile output:analog-stereo+output:hdmi-stereo+output:hdmi-stereo+output:hdmi-stereo]
description = Foobar
output-mappings = analog-stereo hdmi-stereo hdmi-stereo-extra1 hdmi-stereo-extra2
input-mappings = 

次に、通常のデスクトップユーザーとしてPulseを再起動します。

pulseaudio --kill; sleep 1; pulseaudio --start

新しいプロファイルを使用するようにカードを設定します。

pacmd set-card-profile 0 output:analog-stereo+output:hdmi-stereo+output:hdmi-stereo+output:hdmi-stereo

これで、pacmd list-sinks新しい設定ファイルで識別された各ポートのさまざまなリスナーが表示されます。

最後にやるべきことは、システムファイルを壊さないようにする方法を見つけることです。可能であれば、ファイルを介してこれを行うのが最善です~/.config/pulse


編集する

ここM-Audio USB デバイスの新しいプロファイルを設定する方法を説明します。私も私がしたことを調べましたが、それはいくつかの変更でした(私は既存のファイルを変更するのが好きではなく、パッケージのアップグレードで上書きされる傾向があります)。

/etc/udev/rules.d/91-pulseaudio.rules次の内容で新しいファイルを追加します。

# Custom Profile for onboard Intel 8086:12c0

SUBSYSTEM!="sound", GOTO="xpulseaudio_end"
ACTION!="change", GOTO="xpulseaudio_end"
KERNEL!="card*", GOTO="xpulseaudio_end"

SUBSYSTEMS=="pci", ATTRS{vendor}=="0x8086", ATTRS{device}=="0x1c20", ENV{PULSE_PROFILE_SET}="my-personal.conf"

LABEL="xpulseaudio_end"

これはほとんどのコピーです/lib/udev/rules.d/90-pulseaudio.rules

これはオンボードサウンドカードなので、これらのルールは起動時に実行する必要があるため、initrdカーネルで使用されるルールの1つである必要があります。私は自分のカーネルをコンパイルしてmake-kpkgこのルールをコピーしたので、これは私にとって問題ではありません。

/usr/share/pulseaudio/alsa-mixer/profile-sets/my-personal.conf次に、必要な設定(他の設定ファイルからコピーおよび変更)を一覧表示できる新しいファイルを追加します。

おすすめ記事