неділя, 17 квітня 2011 р.

FreeBSD. Проблема со звуком в firefox на некоторых сайтах с flash решена.

Как то я заметил, что на некоторых сайтах на flash нет звука. Когда это произошло и как было раньше я вам сказать не могу. На youtube проблем со звуком нет и не помню были ли они у меня вообще. Версия firefox  в данном случае не очень важна, все что здесь мною будет изложено актуально для firefox >=3.5. Для сведения, у меня установлены firefox-4.0_1,1, firefox-i18n-4.0, linux-f10-flashplugin-10.2r153, linux-f10-alsa-lib-1.0.21_1.

Для диагностики проблемы я запустил firefox в терминале, лично я пользуюсь утилитой Terminal из состава xfce.
При переходе на такой сайт в окне терминала начинает сыпаться куча ошибок:
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
ALSA lib pcm_hw.c:1433:(_snd_pcm_hw_open) Invalid value for card
ALSA lib confmisc.c:768:(parse_card) cannot find card '0'
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such file or directory
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
ALSA lib pcm_hw.c:1433:(_snd_pcm_hw_open) Invalid value for card

Погуглив я узнал, что Linux-овый flashplugin использует alsa. Так как alsa это не наш путь, в FreeBSD обычно используется oss, я наковырял информацию, что alsa умеет работать через oss. Для этого, создаем в домашнем каталоге файл .asoundrc и впихиваем в него следующие строчки:
pcm.!default
 {
   type oss
   device /dev/dsp
 }
 mixer.!default
 {
   type oss
   device /dev/dsp
 }
ctl.!default {
 type oss
 device /dev/mixer
}
Эти строчки объясняют alsa, что необходимо использовать для вывода звука oss. Казалось бы все должно заработать, но не тут то было. После перезапуска firefox, наблюдаем в терминале новый шквал ошибок:
ALSA lib pcm_hw.c:1433:(_snd_pcm_hw_open) Invalid value for card
ALSA lib pcm.c:2171:(snd_pcm_open_conf) Cannot open shared library /usr/lib/alsa-lib/libasound_module_pcm_oss.so

Казалось бы все понятно и необходимо установить пакет alsa-plugins, но лучше этого не делайте, потратите зря время. В этом пакете библиотеки родные freebsd-шные, а flashplugin хочет linux-овых. Поэтому freebsd-шные пакеты совместимости alsa-lib, alsa-utils, alsa-plugins устанавливать не надо, они вам не помогут. Что бы понять это я протанцевал с бубном около 3-х дней. Доходило до исступления. Библиотеки лежат там где положено, а он их не видит, чтобы вы не делали.
Дальнейшее решение проблемы очень простое. Скачиваем с сайта http://eseb.net/ftp/fedora10-i386.updates/ пакет  alsa-plugins-oss-1.0.21-3.fc10.i386.rpm и выковыриваем из него файлы libasound_module_ctl_oss.so и libasound_module_pcm_oss.so. Я это сделал с помощью "Менеджера архивов" из состава gnome. Помещаем их в каталог  /compat/linux/usr/lib/alsa-lib.
Вот и все, теперь звук есть на всех сайтах и самое главное, что на youtube он не пропал.
Правда стабильности в работе flashplugin-у это не добавило и звук пропадает вместе с "залипанием" или вываливанием flashplugin. Просто обновите окно и все восстановится.

Немає коментарів:

Дописати коментар