Да, я знаю, давно пора бросить вредную привычку использовать Skype.
Что имеем:
- Веб-камера “Chicony Electronics Co., Ltd 2.0M UVC Webcam / CNF7129” на ноутбуке Asus K50IN
- Перевернутое изображение в Linux (Ubuntu 16.04) 64-bit в Skype (skypeforlinux 8.34.0.78).
Если загуглить, это распространенная проблема, и решение простое. Но нужно ненадолго выпрямить руки.
Что советуют:
Для пакета skype (не skypeforlinux) в 64-битной системе все, как один, советуют установить 32-битную библиотеку libv4l (пакет libv4l-0:i386) (тут, например, довольно подробно описано):
1 2 3 |
$ sudo dpkg --add-architecture i386 $ sudo apt-get update $ sudo apt-get install libv4l-0:i386 |
И использовать ее при загрузке Skype с помощью определения переменной окружения LD_PRELOAD (с помощью нее можно указать системному компоновщику времени выполнения (ld.so), что он должен загрузить указанные библиотеки раньше других):
1 |
LD_PRELOAD=/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so skype |
Но при этом валится ошибка:
ERROR: ld.so: object '/usr/lib/i386-linux-gnu/libv4l/v4l1compat.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
В моем случае (и не только в моем) для пакета skypeforlinux помогло использование либы libv4l именно под разрядность системы, т.е. 64-bit.
1 |
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so skypeforlinux |
Теперь можно запилить правильный ярлык запуска программы.
1 2 3 4 5 |
# создаем "кастомный" ярлык из стандартного путем копирования $ sudo cp /usr/share/applications/skypeforlinux.desktop ~/.local/share/applications/skypeforlinux.desktop # меняем параметр EXEC $ nano ~/.local/share/applications/skypeforlinux.desktop Exec=bash -c 'LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /usr/bin/skypeforlinux %U' |
P.S.
Не забудьте проверить правильный путь к либе, иначе вылезет ошибка (здесь ошибка в дефисе x86-64):
ERROR: ld.so: object '/usr/lib/x86-64-linux-gnu/libv4l/v4l1compat.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
Так же советовали использовать утилиту v4l2-ctl для настройки камеры (входит в v4l-utils).
1 |
$ sudo apt-get install v4l-utils |
Но попытки револю переворота с помощью нее не завершились успехом:
1 2 3 4 5 6 |
$ v4l2-ctl -c vertical_flip=0 unknown control 'vertical_flip' $ v4l2-ctl --set-ctrl vertical_flip=1 unknown control 'vertical_flip' $ v4l2-ctl --set-ctrl=rotate=180 unknown control 'rotate' |
Вероятно, это потому что в списке поддерживаемых параметров камеры про переворот вообще ничего нет:
1 2 3 4 5 6 7 8 9 10 11 12 |
$ v4l2-ctl -l brightness (int) : min=-64 max=64 step=1 default=-10 value=-10 contrast (int) : min=0 max=95 step=1 default=0 value=0 saturation (int) : min=0 max=128 step=1 default=64 value=64 hue (int) : min=-40 max=40 step=1 default=0 value=0 white_balance_temperature_auto (bool) : default=1 value=1 gamma (int) : min=72 max=500 step=1 default=100 value=100 gain (int) : min=0 max=100 step=1 default=0 value=0 power_line_frequency (menu) : min=0 max=2 default=2 value=2 white_balance_temperature (int) : min=2800 max=6500 step=1 default=6500 value=6500 flags=inactive sharpness (int) : min=0 max=7 step=1 default=2 value=2 backlight_compensation (int) : min=0 max=1 step=1 default=0 value=0 |
спасибо, сработало. asus k50ab, skype 8.56.0.103, ubuntu 16.04
Это гуд!