Про браузери та відеодзвінки́


Я переважно користу́юся Firefox. Також у мене є Chromium.

Колись Chromium був моїм основним браузером, але через певні дії «корпорації добра» я був вимушений припинити його активне використання і, відповідно, перейти на Firefox.

Звукова система у ме́не ALSA, тому у Firefox є проблеми з мікрофо́ном. Офіційно Firefox не підтримує ALSA, звук має працювати тільки через PulseAudio, який мені дуже не подобається і який я не використовую. При цьому відтворення звуку через ALSA у Firefox працює. Дідько.

Тому для відеодзвінкі́в я запуска́ю Chromium. Йому ніщо не заважає працювати з ALSA. Все працює, відео є, звук є, все чудово. Тобто майже все: на жаль, Chromium не вміє робити screen sharing.

Кажуть, Chrome для Linux вміє робити screen sharing, а Chromium — ніт. Я не перевіряв, що там вміє чи не вміє Chrome, бо це закритий софт. Хай хтось інший користується закритим софто́м. Я не довіря́ю чужим біна́рникам і не запускаю їх там, де є щось важливе. Якщо дуже треба запустити чужий біна́рник, використовую гумові рукавички і віртуальні машини.

Три роки тому я знайшов рішення для screen sharing в Chromium’і. Я використовував v4l2loopback, який створює віртуальний пристрій Video4Linux. На цей пристрій можна спрямовувати якийсь відеопотік, який я хочу показати.

# завантажити модуль, створити пристрій /dev/video10
sudo modprobe v4l2loopback video_nr=10 exclusive_caps=1

# взяти відео з веб-камери, відзерка́лити горизонтально, переспрямува́ти
ffmpeg -f v4l2 -i /dev/video0 -vf "hflip,format=yuv420p" -f v4l2 /dev/video10

# взяти відео з екрану, відзерка́лити та масштабува́ти, переспрямува́ти
ffmpeg -f x11grab -r 30 -s 1920x1080 -i :0.0+0,0 \
    -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 \
    -vf 'hflip,scale=1280:720' /dev/video10

Круто, правда? Все, що треба — це десь в налаштуваннях Google Meet перемкну́ти веб-камеру на цей віртуальний пристрій, ну і керувати цим пристроєм за допомогою своїх скрипті́в.

Та останнім часом рішення з v4l2loopback вже більше не працює. У списку камер просто не з’являється цей віртуальний пристрій. Дідько!

Тож маю ще одне рішення: я запуска́ю Firefox разом з apulse. Це невелика програма-обгортка, що робить вигляд, нібито тут у нас є PulseAudio. Насправді вона підміняє деякі динамічні бібліотеки, потрібні для доступу до PulseAudio.

Наче працює. І screen sharing наче працює.