Прошу помочь новичку в настройке звука
Сразу оговорюсь - я совершеннейший новичок в Linux. Неделю назад я установил на свой HTPC Sabayon (2.6.34-sabayon (Gentoo 4.4.2 p1.0)), до этого там стояла Win 7 + XBMC. Все проблемы с новой ОС постепенно к моему удовольствию разрешились, осталась только одна, но очень болезненная - звук. Звук у меня встроенный Realtek ALC889A (SPDIF), есть еще HDMI выход с чипсета Nvidia 9400, но он отключен в BIOS. SPDIF оптикой подключен к ресиверу. Под Win проблем со звуком не было - канальность звука всегда была правильной, громкость регулировалась в XBMC (Audio Output было установлено в Analog Audio) для любого источника (MP3, AC3, DTS, OGG, AAC). Однако теперь со звуком полный беспорядок, сейчас я и попытаюсь его описать:
lspci -v 00:08.0 Audio device: nVidia Corporation MCP79 High Definition Audio (rev b1) Subsystem: Giga-byte Technology Device a102 Flags: bus master, 66MHz, fast devsel, latency 0, IRQ 21 Memory at e5180000 (32-bit, non-prefetchable) [=16K] Capabilities: [44] Power Management version 2 Kernel driver in use: HDA Intel Kernel modules: snd-hda-intel aplay -l **** List of PLAYBACK Hardware Devices **** card 0: NVidia [HDA NVidia], device 0: ALC889A Analog [ALC889A Analog] Subdevices: 1/1 Subdevice #0: subdevice #0 card 0: NVidia [HDA NVidia], device 1: ALC889A Digital [ALC889A Digital] Subdevices: 0/1 Subdevice #0: subdevice #0 aplay -L null Discard all samples (playback) or generate zero samples (capture) front:CARD=NVidia,DEV=0 HDA NVidia, ALC889A Analog Front speakers surround40:CARD=NVidia,DEV=0 HDA NVidia, ALC889A Analog 4.0 Surround output to Front and Rear speakers surround41:CARD=NVidia,DEV=0 HDA NVidia, ALC889A Analog 4.1 Surround output to Front, Rear and Subwoofer speakers surround50:CARD=NVidia,DEV=0 HDA NVidia, ALC889A Analog 5.0 Surround output to Front, Center and Rear speakers surround51:CARD=NVidia,DEV=0 HDA NVidia, ALC889A Analog 5.1 Surround output to Front, Center, Rear and Subwoofer speakers surround71:CARD=NVidia,DEV=0 HDA NVidia, ALC889A Analog 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers iec958:CARD=NVidia,DEV=0 HDA NVidia, ALC889A Digital IEC958 (S/PDIF) Digital Audio Output
Проблема в том, что мне так и не удалось никаким плеером получить регулируемый звук 5.1. Насколько я понял, используя утилиты pavumeter и pavucontrol, звук AC3 и DTS идет мимо Pulseaudio прямо на SPDIF (громкость не регулируется). Все остальные типы аудиопотоков попадают в Pulseaudio, который по умолчанию настроен как Analog Stereo Output. Интересное начинается когда выбираю Analog Surround 5.1 Output - avumeter и pavucontrol показывают регулируемый звук 5.1 (для 5.1 источников и если ALSA выводит на ALC889A Analog), однако на ресивере тишина. В общем - "по отдельности" все работает, то есть звук КАК БЫ есть, однако в медиацентре такой разнобой никуда не годится.
У меня сложилось определенное подозрение, что проблема в том, ЧТО выводится на ресивер Pulseaudio когда оно сконфигурировано как Analog Surround 5.1 Output. Может просто в формате, не понимаемом ресивером? В общем, я практически в отчаянии )) Как-то почему-то все очень сложно со звуком ))
Приветствую любую помощь и любые идеи (по теме, разумеется :-)
- Для комментирования войдите или зарегистрируйтесь
1. Конфигурируем ядро на
1. Конфигурируем ядро на поддержку alsa
2. Собираем и устанавливаем ядро (а так же правим /boot/grub/menu.lst и т.д.)
в столбце SPDIF (должно загореться два нолика на зеленом фоне снизу). Возможно нужно еще выставить "SPDIF Playback Source" в значение PCM...
make all modules_install firmware_install install
3. перезагружаемся с новым ядром
4. проделываем alsaconf
5. запускаем алсу
/etc/init.d/alsasound
и добавляем ее в автозагрузкуrc-update add alsasound boot
6. из-под нужного пользователя запускаем alsamixer и нажимаем
теперь звук по дефолту будет через spdif
P.S. для того, чтобы AC3 и DTS декодировал ресивер, а не программный кодек, для mplayer нужно прописать в конфиг
afm=hwac3 или в командной строке дописывать -afm hwac3. В других приложениях лазать по настройкам и искать галочку AC3/DTS PassThrouth или аналогичную ;)
Удачи с домашним кинотеатром ;)
еще для спарвки: через spdif
еще для спарвки:
через spdif можно передавать только стерео (максимум 24/96-оптика, 24/192-коаксиал)!!! никакого 5.1!! только если DTS или AC3, а это сжатые форматы ;)
P.S. включи на ресивере DolbyPrologycII или режим дублирования каналов и отключай его, когда смотришь фильм с DTS или AC3 ;)
P.P.S.
нажимаем клавишу латинскую М ;)
P.P.P.S. в спецификации на spdif сказано, что через него можно передавать квадро-звук, но реально ни один ресивер и ПО этого не поддерживают ((
Цитата: через spdif можно
Разумеется, это так. Я не совсем корректно поставил вопрос. Сейчас загрузил 7-ку и посмотрел, как там все настроено: в настройках карты для digital output стоит Dolby Surround Live 5.1, то есть ВЕСЬ звук перекодируется на лету в AC3 (индикаторы ресивера это подтверждают), может даже и аппаратно. Громкость регулируется программно. Это то, что мне и надо. На другом компе (XP) в настройках карты такого нет, но этого же эффекта я добился в настройках ffdshow audio decoder, включив AC3 SPDIF encode mode. Вопрос в том, как добиться этого не в Windows? ;-)
По вопросу ядра и Alsa - я так понимаю, у меня уже все в порядке? Звук-то через нее в общем-то работает:
Так как все-таки включить "AC3 SPDIF encode mode"? может надо начать с родного Realtek драйвера? (Если этот режим поддерживается аппаратно (как это узнать?), то вся проблема сразу и должна решиться) На их сайте свеженький, вчерашний. Самому эту проблему мне я чувствую не одолеть, буду весьма признателен, если поможете..
Резюмирую: нужно чтобы весь звук перекодировался на лету в AC3 - никаких pass-through, нужна программная регулировка громкости.
вот нашел кое-что:
вот нашел кое-что: http://sonosaurus.com/ac3jack/. В Portage такое не включено...
вот
вот http://www.alsa-project.org/main/index.php/A52_plugin вроде бы то что нужно.
1. Я затрудняюсь определить, установлен ли он у меня. Как это сделать?
2. нужно сконфигурировать ALSA для использования плагина. Нужна помощь. Вот инструкция:
Ты в Gentoo Linux!
USE index подсказывает, что есть одноимённый USE-флаг
a52
.Я бы начал с глобального выставления этого флага (и пересборки мира с опцией
--newuse
).:wq
--
Live free or die
Цитата: Я бы начал с
можно поподробнее?
Beelzebubbie
Хэндбук и
man emerge
в помощь.:wq
--
Live free or die
1. анархист правильно сказал
1. анархист правильно сказал про флаг a52... только скорее всего он тянет только библиотеку для декодирования, а не кодирования
2. плагины для алсы находятся в пакете alsa-plugins... наверняка там есть то, что нужно
3. я бы особо не рассчитывал получить сей эффект в линухах, т.к. DolbyDigital штука закрытая и врятли появится поддержка кодирования в открытом доступе...
4. а по поводу мануала, то я не пойму, что там сложного )) надовсего лишь создать в домашнем каталоге файл .asoundrc и прописать в него то, что предлагается ;) это если для одного пользователя... либо создать аналогичный файл в /etc, чтобы примениить настройки глобально...
Теперь все наоборот...
В общем, махнул я рукой на Sabayon и поставил генту. Перед настройкой звука перечитал все по alsa (все, что смог найти и понять). "Установил и настроил" A52 plugin. Все прекрасно работает - в смысле кодируется в AC3 и передается на SPDIF, громкость регулируется программно. (Кстати, официально разрешенная версия alsa-plugins-1.0.21 работала неправильно, не передавая кодеру инфу о каналах, а в замаскированной alsa-plugins-1.0.23-r1 этой ошибки нет.)
Однако... однако возникла другая проблема (ха-ха, я просто не могу в это поверить). теперь звук есть только через A52 plugin!! Без него - тишина.. Удаляю asound.conf - все равно тишина. Когда именно и куда пропал простой звук на default - неизвестно. (Возможно при установке замаскированной alsa-plugins-1.0.23-r1) Вопрос - "зачем он нужен, если работает через A52?" ответ такой, что через A52 в один момент только один звук быть может, второй вызывает audio open error: Device or resource busy.
Воспроизведение на устройство iec958 кстати работает. Конечно громкость в данном случае не регулируется.
Вопрос в том, как это починить? Уже 2 недели пытаюсь сделать нормальный звук и без толку! Вправьте плз мне мозги )))))
вот asound.conf:
И еще вопрос - при экспериментах с asound.conf у меня получился лишний регулятор громкости - не могу найти как его удалить.
приложив воистину титаническое количество
приложив воистину титаническое количество в общем-то бесплодных усилий, я случайно наткнулся на проблему, связанную с модулем snd-hda-intel. А именно, сделав ему rmmod и попробовав скормить ему разные опции, я внезапно обнаружил, что:
1) один из 2х регуляторов громкости SPDIF стал mute
2) исчез "лишний" софтрегулятор оставшийся из предыдущих опытов
3) появился звук на hw:0,0 и hw0,1
что именно произошло, я не понял - если кто знает, расскажите )
Однако, осталась проблема с одновременным воспроизведением через a52 plugin и pcm на SPDIF - не получается. Насколько я понял, и a52 и dmix требуют в качестве выхода не виртуальное а физическое устройство. То есть нельзя смиксить входящие звуки а потом их отправить в a52. Или все-таки как-то можно? Может быть можно это сделать через какое-нибудь PulseAudio - миксить в нем а потом в a52 отправлять? Хотя бы направление поисков если бы кто подсказал, быдл бы весьма замечательно...