web-dev-qa-db-ja.com

1つのGPUに接続された2つの個別のHDMI出力デバイスを介してオーディオを同時に再生するにはどうすればよいですか?

デュアルモニターセットアップで、各モニターがオーディオを再生でき、単一のRX5700XT GPUに接続しています。

現在、サウンド設定からいずれかを選択して出力デバイスにすることができます。

enter image description hereenter image description here

私がしようとしていることは、2つを1つの出力デバイスに結合して、2つのモニターで同時にオーディオを再生できるようにすることです。これを達成する最も簡単な方法は何ですか?

ありがとうございました。

5

まず、PulseAudio設定をバックアップします$Sudo cp /etc/Pulse/default.pa /etc/Pulse/default.pa.bak

完了したら、ハードウェア再生デバイスのリストを確認し、$ aplay -lを使用して探しているデバイスをメモします。出力は次のようになります。

aplay -l outuput

カードID[〜#〜]および[〜#〜]をメモして、一緒にシンクする出力のデバイスIDをメモします。 alsa-sink module を使用して、これらの出力のそれぞれに対して新しいシンクを作成します(実際にこのリンクをたどる必要があります)。任意のテキストエディターを開き、コピー/貼り付け:

load-module module-alsa-sink device="hw:[CARD_ID],[DEVICE_ID]" sink_name=vsink_[CARD_ID][DEVICE_ID] sink_properties="device.description='HDMI [DEVICE_ID] VSINK' device.icon_name='audio-card'"

[CARD_ID][DEVICE_ID]を、前のステップでメモしたものに変更します。このコードの行は、組み合わせたい出力と同じ数だけ、それぞれのCARD_IDおよびDEVICE_IDと一緒にする必要があります。

この手順が完了したら、 combine-sink module (これも従う必要があります)を使用して、出力を「接着」します。これをコピーしてエディターに貼り付けます。

load-module module-combine-sink sink_name=combined_vsink slaves=[first vskink name],[second vsink name],[n vsink name] sink_properties="device.description='[a name for your combined vsink' device.icon_name='audio-card-symbolic'"

最終的には、次のようなものが必要です。

your code should look like this

設定が完了したら、それをPulseAudio設定にロードする必要があります(最初にバックアップを作成しました)。 gedit admin:///etc/Pulse/default.paを使用して編集するために開き、このセクションを検索します。

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)
#load-module module-alsa-sink
...
...

これまでにこのファイルを編集したことがない場合は、セクションにいくつかコメント行があります。そのセクションの最後の行の直後に、行を貼り付けます。貼り付けた後、ファイルが次のようになるように、私のモックが見つかります。

### Load audio drivers statically
### (it's probably better to not load these drivers manually, but instead
### use module-udev-detect -- see below -- for doing this automatically)

load-module module-alsa-sink device="hw:0,0" sink_name=vsink_00 sink_properties="device.description='HDMI0:0 VSINK' device.icon_name='audio-card'"
load-module module-alsa-sink device="hw:0,1" sink_name=vsink_01 sink_properties="device.description='HDMI0:1 VSINK' device.icon_name='audio-card'"
load-module module-combine-sink sink_name=combined_vsink0 slaves=vsink_00,vsink_01 sink_properties="device.description='HDMI0:0 + HDMI0:1' device.icon_name='audio-card-symbolic'"

これが完了したので、一貫して機能するには、PulseAudio dev-detect module (これが最後のモジュールです)を非アクティブ化する必要があります。これにより、変更が上書きされなくなります。システムを構成しようとしているときに手動で行いました。このようなセクションが見つかります。必ずすべての行にコメントを付けてください。

### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
### Use the static hardware detection module (for systems that lack udev support)
#load-module module-detect
#.endif

次に、編集を完了するには、新しいシンクをファイルの最後の行のデフォルトシンクとして設定します。

set-default-sink combined_vsink0

ファイルを保存してからPulseAudioを再起動し、pulseaudio --kill && pulseaudio --startを使用してすべてが機能しているかどうかを確認し、レベルがalsamixerに正しく設定されていることを確認してください。デフォルトでミュートされた新しい出力がロードされることがあります。完了したら、システム設定を確認して、新しく作成された出力を選択します。

問題が発生した場合は、最初のステップとして作成したと確信しているバックアップファイルを使用して、いつでもPulseAudioの設定を元に戻すことができます。

3
Alexandre Teles

これは、Pulse-audio CLIを使用して、他の2つのシンク(サウンドカード)をマージする新しいシンクを作成することで実現できます。

最初にシンクの名前を取得します。

pacmd list-sinks

次に、新しいシンクを作成します

pacmd load-module module-combine-sink sink_name=combined slaves=sink1-name,sink2-name

ここで、sink1-name&sink2-nameは、最初のコマンドの出力でのシンクの名前です。

これで、両方のデバイスにサウンドを出力するために選択できる新しいシンクができました。

0
tomodachi