Как одновременно играть аудио через 2 отдельных устройства вывода HDMI, подключенные к одному GPU?

У меня есть установка парного монитора с каждым монитором, способным к проигрыванию аудио, подключенного к единственному RX5700XT GPU.

Прямо сейчас я могу выбрать любой из настроек Sound, чтобы быть Устройством вывода.

enter image description here enter image description here

То, что я пытаюсь сделать, должно объединить два в одно Устройство вывода, таким образом, я могу играть аудио с двумя мониторами одновременно. Что самый легкий путь состоит в том, чтобы достигнуть этого?

Спасибо.

4
задан 21 February 2020 в 19:47

3 ответа

В первую очередь, скопируйте свою конфигурацию PulseAudio $sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak

После того как это сделано, мы проверим наш список аппаратных устройств воспроизведения и примем во внимание тех, мы ищем использование $ aplay -l. Ваш вывод должен быть похожим на это:

aplay -l outuput

Примите во внимание идентификатор Карты И идентификатор Устройства выводов, которые Вы хотите снизить вместе. Теперь мы попытаемся сделать новый приемник для каждого из тех выводов с помощью модуля alsa-приемника (необходимо действительно перейти по этой ссылке). Откройте любой текстовый редактор и скопировать/вставить:

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.

После того как этот шаг сделан, мы будем использовать модуль приемника объединения (необходимо следовать за этим также), таким образом, мы можем "склеить" наши выводы. Скопируйте и вставьте это в своем редакторе:

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 udev-обнаруживают модуль (это - последнее, я обещаю), таким образом, это не переопределяет изменения, которые мы сделали вручную при попытке настроить систему. Вы найдете раздел как этот, удостоверьтесь, что прокомментировали все его строки:

### 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 с помощью файла резервной копии, я уверен, что Вы создали как свой первый шаг.

2
ответ дан 17 March 2020 в 00:17

Это может быть достигнуто путем создания нового приемника, объединяющего два других приемника (звуковые карты) Используя импульсный аудио CLI.

сначала получите название приемников:

pacmd list-sinks

затем создайте новый приемник

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

Где sink1-имя и sink2-имя являются названиями Ваших приемников в выводе от первой команды

у Вас должен теперь быть новый приемник, который можно выбрать для вывода звука к обоим устройствам

0
ответ дан 17 March 2020 в 00:17

Упрощая блестящий принятый ответ, скопируйте и вставьте следующую функцию:

# $@:   List of sinks to combine, as `CARD_ID:DEVICE_ID`
__os_audio_sinks_combine() {
  unset sink_names
  for i; do
    curr_sink_id="${i%%:*}"
    curr_device_id="${i#*:}"
    
    curr_device_name="hw:${curr_sink_id},${curr_device_id}"
    
    curr_sink_name="vsink_${curr_sink_id}${curr_device_id}"
    
    test -n "${sink_names}" && sink_names="${sink_names},"
    sink_names="${sink_names}${curr_sink_name}"
    
    curr_device_desc="HDMI ${curr_device_id} VSINK"
    
    echo "load-module module-alsa-sink device=\"${curr_device_name}\" sink_name=${curr_sink_name} sink_properties=\"device.description='${curr_device_id}' device.icon_name='audio-card'\""
  done

  echo "load-module module-combine-sink sink_name=combined_vsink slaves=${sink_names} sink_properties=\"device.description='comb_vsink' device.icon_name='audio-card-symbolic'\""
}

Затем, как указано выше, (1) сделайте резервную копию конфигурации, (2) найдите соответствующие приемники, которые вы хотите объединить, ( 3) сгенерируйте конфигурацию (она автоматически копируется в буфер обмена с помощью xclip) и (4) отредактируйте, как указано выше:

sudo cp /etc/pulse/default.pa /etc/pulse/default.pa.bak
aplay -l

__os_audio_sinks_combine 0:9 0:10 | xclip -sel clipboard
sudo editor /etc/pulse/default.pa
1
ответ дан 8 August 2020 в 10:13

Другие вопросы по тегам:

Похожие вопросы: