Теперь я в скайпе!
Итак, происходило все следующим образом.
Для начала я решил настроить гарнитуру. Т.к. на компьютере у меня два звуковых устройства: встроенная недозвуковушка от интеля и креативовская звуковая карта (используемая, естественно, как основная — к ней подключена система 5.1), я решил использовать отключенную за ненадобностью встроенную для гарнитуры. Когда-то давно я уже забавлялся с выводом на два звуковых устройства, вот и начал вспоминать.
Включил в биосе недозвуковушку и загрузился. Опаньки: отвалилась основная карточка. Но это и понятно: ведь у меня не было указаний для alsa работать с двумя картами. Я заглянул в файл
Итак, теперь у меня в
alias char-major-116 snd
options snd cards_limit=2 slots=,snd-hda-intel
# LHB6.mOmgEN0gox0:SBLive! 5.1 Digital Model SB0220
alias snd-card-0 snd-emu10k1
alias sound-slot-0 snd-emu10k1
# W60f.x8s5HMdIibD:82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller
alias snd-card-1 snd-hda-intel
alias sound-slot-1 snd-hda-intel
options snd-emu10k1 enable=1 index=0 max_buffer_size=512
options snd-hda-intel enable=1 index=1
Первая опция, по идее, уже не нужна, но я на всякий случай и ее добавил (ассоциация устройств с major number == 116 со звуковыми картами).Вторая опция говорит, что звуковых карт две (на самом деле их у меня три: есть еще и встроенная в видеокарту, а т.к. монитор у меня подключен по HDMI, я могу, в принципе, и ее задействовать, но пока не вижу в этом необходимости), и что интелевская будет второй.
Далее идет ассоциация нулевой звуковой карты с модулем snd-emu10k1, а первой - с модулем snd-hda-intel.
Ну и напоследок - опции выделения буфера в 512МБ для Creative SB Live, а также («на всякий пожарный») — назначение им номеров.
После перезагрузки все работало. Значит, звуковая карта настроена правильно.
Далее я представлял себе тяжелый процесс борьбы с веб-камерой Logitech webcam C100. Однако, как только я ее подключил, появилось устройство
Следующим шагом были мытарства со скайпом, т.к. эта скотина для арча (в репозиториях) была лишь 32-битной, а у меня система 64-битная. Пришлось сносить gcc, glibc и прочие нужные библиотеки и устанавливать вместо них соответствующие multilib-пакеты. Скайп установился yaourt'ом без проблем. Я зарегистрировался и проверил через обратную связь скайпа работу микрофона. Все ОК.
Ну, а вечером состоялся почти двухчасовой сеанс болтовни с другом.
P.S. Помимо этого я еще потратил довольно-таки приличное количество времени, чтобы научиться писать видео+звук при помощи ffmpeg и/или mencoder. Первые попытки дали следующее: у mencoder'а была хорошая картинка, но жуткое рассогласование со звуком; ffmpeg же давал ужасное качество видео, но более-менее прилично согласованный звук (правда, с небольшим запаздыванием). mencoder'ом я писал так:
mencoder tv:// -tv driver=v4l2:device=/dev/video0:width=640:height=480:fps=5:alsa:forceaudio:amode=0:adevice=hw.1,0 -ovc lavc -lavcopts vcodec=mpeg4 -oac mp3lame -lameopts vbr=3:br=32:mode=3 -af volnorm -o file.avi
Потом я посмотрел, как у меня пишется экранное видео (когда-то сделал я такой alias):
alias recdesktop='ffmpeg -f x11grab -s 1920x1080 -r 8 -i :0.0 -sameq '
Ага: нужная опция (возможно) — -sameq, добавив ее я действительно получил желаемое. Правда, осталось небольшое рассогласование начала звука и начала видеозаписи (видимо, звук начинал писаться сразу, а камера еще некоторое время инициализировалась), поэтому я добавил еще и временной сдвиг. В результате получилось следующее:
ffmpeg -itsoffset -0.4 -f video4linux2 -s 640x480 -i /dev/video0 -sameq -f alsa -i hw:1,0 -f avi file.avi
(задержку я пока точно не установил: поэкспериментирую позже) и соответствующим же образом я оформил еще один alias.
Так что, теперь можно еще и повыкаблучиваться: например, подключить к недозвуковушке выход комбика и поиграть, а потом посмотреть со стороны, как получается (может, тогда пойму, почему жена в ужасе убегает, когда я достаю электрогитару ☺).
Да, можно еще и так сделать: сразу писать в файл и смотреть его. Для этого нужно либо запустить mplayer с этим файлом в соседней консоли, либо отправить первый процесс в фон, сразу же запуская mplayer, либо дублируя вывод при помощи tee:
ffmpeg -itsoffset -0.4 -f video4linux2 -s 640x480 -i /dev/video0 -sameq -f alsa -i hw:1,0 -f avi - | tee file.avi | mplayer -