LINUX.ORG.RU

Параллельный вывод звука на два звуковых устройства

 , ,


0

1

Добрый день! Нам необходимо выводить по HDMI порту видео со звуком и одновременно выводить другой звук на встроенную звуковую карту. Имеем оборудование неттоп Pegatron Mercury, Celeron 1037U. В винде определяется две звуковые карты - Intel HDMI и Realtek ALC662, звук параллелится без каких либо проблем. В линуксе всё это почему то видится как одна звуковая карта Intel, причём вывод работает в обоих направлениях, но одновременно только в одном - либо на стандартный выход 3,5, либо на HDMI. Модуль snd_hda_codec_realtek подгружается, но и только. Был бы очень благодарен за любую помощь.

PS По всей видимости такая ситуация далеко не редкость. На компе, с которого сейчас пишу с Core i5 и материнкой Asus - ровно та же самая ситуация. Но в гугле так и не смог ничегошеньки найти.

Вывод cat /proc/asound/cards:

 1 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf7c00000 irq 32

Вывод lsmod:

Module                  Size  Used by
snd_hda_codec_hdmi     53248  2 
snd_hda_codec_realtek    86016  1 
snd_hda_codec_generic    69632  2 snd_hda_codec_realtek
snd_hda_intel          36864  3 snd_hda_codec_hdmi
snd_hda_controller     32768  1 snd_hda_intel
snd_hda_codec         143360  5 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_codec_generic,snd_hda_intel,snd_hda_controller
snd_hwdep              20480  1 snd_hda_codec
snd_pcm               106496  4 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_hda_controller
snd_seq_midi           16384  0 
snd_seq_midi_event     16384  1 snd_seq_midi
intel_rapl             20480  0 
iosf_mbi               16384  1 intel_rapl
x86_pkg_temp_thermal    16384  0 
intel_powerclamp       20480  0 
coretemp               16384  0 
hid_generic            16384  0 
snd_rawmidi            32768  1 snd_seq_midi
kvm                   479232  0 
snd_seq                65536  2 snd_seq_midi_event,snd_seq_midi
crct10dif_pclmul       16384  0 
snd_seq_device         16384  3 snd_seq,snd_rawmidi,snd_seq_midi
crc32_pclmul           16384  0 
snd_timer              32768  2 snd_pcm,snd_seq
arc4                   16384  2 
cryptd                 20480  0 
snd                    86016  15 snd_hda_codec_realtek,snd_hwdep,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_rawmidi,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel,snd_seq_device
rtl8192ce              57344  0 
rtl_pci                28672  1 rtl8192ce
rtl8192c_common        53248  1 rtl8192ce
rtlwifi                73728  3 rtl_pci,rtl8192c_common,rtl8192ce
serio_raw              16384  0 
mac80211              712704  3 rtl_pci,rtlwifi,rtl8192ce
i915                 1048576  3 
cfg80211              524288  2 mac80211,rtlwifi
rtsx_pci_ms            20480  0 
memstick               20480  1 rtsx_pci_ms
mei_me                 20480  0 
drm_kms_helper        126976  1 i915
lpc_ich                24576  0 
shpchp                 40960  0 
soundcore              16384  2 snd,snd_hda_codec
mei                    90112  1 mei_me
drm                   344064  5 i915,drm_kms_helper
i2c_algo_bit           16384  1 i915
rfcomm                 69632  4 
bnep                   20480  2 
bluetooth             491520  10 bnep,rfcomm
8250_fintek            16384  0 
usbhid                 53248  0 
hid                   110592  2 hid_generic,usbhid
video                  20480  1 i915
mac_hid                16384  0 
parport_pc             32768  0 
ppdev                  20480  0 
lp                     20480  0 
parport                45056  3 lp,ppdev,parport_pc
rtsx_pci_sdmmc         24576  0 
psmouse               118784  0 
r8169                  81920  0 
mii                    16384  1 r8169
ahci                   36864  2 
libahci                32768  1 ahci
rtsx_pci               49152  2 rtsx_pci_ms,rtsx_pci_sdmmc

Если хотя бы одна из «звучащих» программа умеет выбирать устройство alsa не по умолчанию - этого достаточно для решения задачи без какого-либо хитрого вмешательства в конфиги alsa и PA.

Elyas ★★★★★
()
Ответ на: комментарий от Elyas

Так ведь в том и дело, что выбирать не из чего, устройство видится одно. Способ вывода я могу сменить лишь с помощью pulseaudio, в pavucontrol, в конфигурации устройства, но я не могу задействовать оба вывода одновременно.

eol3000
() автор топика

С alsa:

mplayer -slave -ao alsa:noblock:device=hw=0.0 /usr/share/sounds/alsa/Front_Center.wav >& /dev/null & mplayer -slave -ao alsa:noblock:device=hw=0.3 /usr/share/sounds/alsa/Rear_Center.wav >& /dev/null
В пульсе не знаю, не пользуюсь.

arson ★★★★★
()
Ответ на: комментарий от intelfx

Этот модуль, насколько я понял из описания, выводит один и тот же звук на разные выходы, а мне нужно выводить разный звук. Например, по hdmi выводить видео со звуком, а по стандартному выходу слушать музыку (это так, к примеру)

eol3000
() автор топика
Ответ на: комментарий от Elyas

вот он:

default
    Playback/recording through the PulseAudio sound server
null
    Discard all samples (playback) or generate zero samples (capture)
pulse
    PulseAudio Sound Server
sysdefault:CARD=PCH
    HDA Intel PCH, ALC662 rev3 Analog
    Default Audio Device
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    Front speakers
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
hdmi:CARD=PCH,DEV=0
    HDA Intel PCH, HDMI 0
    HDMI Audio Output
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    Direct sample mixing device
dmix:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct sample mixing device
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    Direct sample snooping device
dsnoop:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct sample snooping device
hw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    Direct hardware device without any conversions
hw:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Direct hardware device without any conversions
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC662 rev3 Analog
    Hardware device with all software conversions
plughw:CARD=PCH,DEV=3
    HDA Intel PCH, HDMI 0
    Hardware device with all software conversions

eol3000
() автор топика
Ответ на: комментарий от intelfx

Там один раздел под названием Встроенное аудио и можно выбрать профиль - Аналоговый стереодуплекс, Аналоговый стерео выход, Digital Stereo (HDMI) выход, и т.д. Собственно отсюда я и переключаю, на какой из выходов выводить звук

eol3000
() автор топика
Ответ на: комментарий от arson

Мне кажется, pulseaudio тут даже ни при чём, тут проблема скорее на уровне ядра и alsa, хотя конечно могу ошибаться.

eol3000
() автор топика
Ответ на: комментарий от eol3000

Здесь ты переключаешь, на какой выход будет передавать звук PA сервер. Другие выходы при этом скорее всего отключаются. Мне, в частности, приходится amixer-ом включать фронтальный выход при PA, настроенном на тыловой выход материнки. Естественно ПОСЛЕ запуска PA сервера.

Ещё момент: смущает отсутствие карты с нулевым индексом в /proc/asound/cards. Что-то специальное делалось уже в modprobe.d ?

Elyas ★★★★★
()
Ответ на: комментарий от Elyas

Да, странно. Я экспериментировал с modprobe.d, но потом вернул всё как было. Наверное перезагрузить забыл после этого. Сейчас вывод нормальный:

cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0xf7c00000 irq 32
eol3000
() автор топика
Ответ на: комментарий от eol3000

Мне кажется, pulseaudio тут даже ни при чём

Кажется, креститься надо.
Запустил pavucontrol (загрустился pulseaudio, захватил устройство) - mplayer через alsa перестал работать. Закрыл pavucontrol, убил pulseaudio, включил s/pdif - все обратно работает.

arson ★★★★★
()
Последнее исправление: arson (всего исправлений: 1)
Ответ на: комментарий от eol3000

попробую удалить

В смыле — remove?
Да не, достачно просто убить — kill.

arson ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.