Как исправить перевёрнутый ноутбук с веб-камеры видео
Я использую Ubuntu 16.04 на ноутбуке ASUS N61JQ. Когда я использую видеозвонок с Viber или Facebook (через Chrome), моя веб-камера передает перевернутое изображение. Мне интересно, как это исправить. Поскольку у двух отдельных приложений (Viber и Chrome) есть это, я думаю, что это не определенное приложение.
В поисках исправления в интернете я обнаружил много случаев, в которых даются инструкции, как это исправить для скайпа. Я бегал
sudo apt-add-repository ppa:libv4l/stable
sudo apt-get update
sudo apt-get upgrade
который установлен libv4l-0 libv4lconvert0
и проверено, но не исправить.
Я не следил за этими решениями (например, здесь), потому что viber и chrome не являются 32-битными приложениями. Я проверил, что viber действительно 64-битный с помощью метода, представленного здесь.
Я включаю строки файлов, которые, как я ожидаю, я должен изменить, если я собираюсь сделать что-то похожее на исправление Skype:
$ cat /usr/share/applications/viber.desktop | grep Exec
Exec=/opt/viber/Viber
а также
$ cat /usr/share/applications/google-chrome.desktop | grep Exec
Exec=/usr/bin/google-chrome-stable %U
Exec=/usr/bin/google-chrome-stable
Exec=/usr/bin/google-chrome-stable --incognito
Я не уверен, как изменить эти строки и где найти пакет libv4l для 64-битных систем, чтобы реализовать обходной путь, который заставит viber и chrome работать должным образом.
В своем стремлении исправить основную проблему я начал с поиска настроек камеры / видео в системных настройках Unity "Поиск на компьютере". Но я ничего не нашел. Я также запускаю:
$ ls /dev/video*
/dev/video1
но я не знаю, что из этого получится. Также после запуска
sudo lshw -sanitize
Я получаю, где-то вдоль огромного выхода:
*-usb:0
description: Video
product: USB2.0 UVC 2M WebCam
vendor: USB2.0 UVC 2M WebCam
physical id: 2
bus info: usb@1:1.2
version: 2.02
serial: [REMOVED]
capabilities: usb-2.00
configuration: driver=uvcvideo maxpower=500mA speed=480Mbit/s
Я пытался найти драйвер из этого, но ничего не нашел. Например:
$ ll /lib/modules/4.4.0-28-generic/kernel/drivers | grep uvcvideo
ничего не возвращает Я также запускаю:
$ lsmod | grep uvcvideo
uvcvideo 90112 0
videobuf2_vmalloc 16384 1 uvcvideo
videobuf2_v4l2 28672 1 uvcvideo
videobuf2_core 36864 2 uvcvideo,videobuf2_v4l2
videodev 176128 4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
media 24576 2 uvcvideo,videodev
который (по данным интернета) показывает статус водителей. Не могу интерпретировать это все же.
Где-то должен быть файл драйвера, чтобы я мог его починить, но как мне его найти?
6 ответов
Я продолжал исследовать это и нашел временное решение. Информация из этого ответа также помогла.
Основным отличием здесь является то, что приложения являются 64-битными, поэтому я не мог полностью следовать предыдущим решениям. После установки libv4l
Мне нужно было найти подходящий путь для файла сравнения 64-битной версии, чтобы установить LD_PRELOAD
переменная. Посмотрев вокруг, я обнаружил, что могу сделать это с:
$ dpkg -L libv4l-0 | grep compat
/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so
Этот ответ и ответ Veazer помогли мне обойти эту проблему, изменив файл viber.desktop. Важно, прежде чем вносить изменения, сделайте резервную копию, например:
sudo cp /usr/share/applications/viber.desktop /usr/share/applications/viber.desktop-original
После этого у нас есть вся информация, необходимая для изменения файла viber.desktop. Нам нужно только изменить одну строку. Следующие изменения решают проблему в Viber:
$ cat /usr/share/applications/viber.desktop | grep Exec
Exec=sh -c 'export LIBV4LCONTROL_FLAGS=2 && LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /opt/viber/Viber'
Обратите внимание на целое значение 2 для инверсии камеры.
Я ожидаю, что тот же подход исправит и хром, но я поработаю над ним позже. Если кто-то не может помочь мне решить основную проблему с драйверами веб-камеры.
1) Установите утилиты:
$ sudo apt-get update
$ sudo apt-get install v4l-utils
$ sudo apt-get install v4l2loopback-utils
2) Скачать v4l2loopback
3) Распакуйте папку 'v4l2loopback-master'
4) Скомпилируйте модуль v4l2loopback:
$ make
5) Установите:
$ sudo make install
6) Включить устройство:
$ sudo modprobe v4l2loopback exclusive_caps=1
7) Проверьте, включено ли устройство:
$ v4l2-ctl --list-devices
Dummy video device (0x0000) (platform:v4l2loopback-000):
/dev/video1
USB2.0 UVC 2M WebCam: USB2.0 UV (usb-0000:00:1a.0-1.2):
/dev/video0
8) Скопируйте видео поток с веб-камеры на него через ffmpeg:
$ ffmpeg -f v4l2 -i /dev/video0 -vf "vflip" -f v4l2 /dev/video1
9) Откройте предпочитаемое вами видео приложение (Skype, Hangouts, Zoom,...) и выберите "Dummy video device"
Вы можете увидеть более подробную информацию о параметрах:
Я использую Debian, и это решение, которое я применил, работает нормально:
- Убедитесь, что у вас установлен пакет libv4l-0 (источник:v4l-utils)
- Найдите файл:
/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so
или же/usr/lib/x86_64-linux-gnu/libv4l/v4l2convert.so
Откройте свой терминал и введите ниже:
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /usr/bin/skypeforlinux
Он запустит ваш Skype, вы войдете в систему как обычно, и после открытия ваша камера должна быть исправлена.
Удачи!!
Это сработало для меня на:
- Ubuntu Desktop,
- Ubuntu 18.04 LTS,
- ASUS F3Eseries
Выпуск:
- Скайп видеокамера с ног на голову
- Skype версия 8.48
Разрешить:
sudo nano /usr/bin/skypeforlinux
Обновите последнюю строку.
#!/bin/sh
SCRIPT=$(readlink -f "$0")
USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)
SKYPE_PATH="/usr/share/skypeforlinux/skypeforlinux"
SKYPE_LOGS="$HOME/.config/skypeforlinux/logs"
mkdir -p $SKYPE_LOGS
echo "$SKYPE_PATH"
# was this
#nohup "$SKYPE_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$SKYPE_LOGS/skype-startup.log" 2>&1 &
# changed to
LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so /usr/share/skypeforlinux/skypeforlinux > "$SKYPE_LOGS/skype-startup.log" 2>&1 &
Что касается исправления перевёрнутого / перевернутого видео с веб-камеры ноутбука в браузерах на основе Chrome / Chromium - несколько дней назад я обновил ноутбук ASUS P52F до Linux Mint 18 XFCE, который теперь наравне с Ubuntu 16.04.1. Я встречал видео с веб-камеры WebRTC в перевернутом виде на видеовстречах и в Facebook, используя только веб-браузер Chrome. Firefox работает отлично. Сыр также отображает видео правильно.
После некоторого поиска в Google я нашел этот отчет об ошибке. В комментарии 22 вы можете видеть, что 2 года назад было предложено 0001-Use-libv4l2-for-Linux-V4L-grabber.patch, исправляющее поведение Chrome / Chromium. Уже более года libv4l2 добавляется в Chromium, но не поддерживается для Linux. Вы можете увидеть все обсуждение в ветке сообщений об ошибках. Короче говоря, похоже, что они не работают над исправлением этого уже почти год. Тем не менее, есть некрасивый обходной путь...
Вы можете добавить Flip это расширение в Chrome. Это позволяет вам перевернуть видео с веб-камеры или любой другой элемент веб-страницы. Он перевернет его только локально, поэтому людям, с которыми вы общаетесь через Chrome, также необходимо использовать тот же прием. Это не красиво, но работает... ну, вроде; В конце концов, переход на Firefox может быть лучшим и более удобным решением. Ура!
Установите v4l-utils
пакет, который содержит v4l2-ctl
полезность:
sudo apt-get install v4l-utils
Затем отредактируйте ваш.profile:
nano ~/.profile
И добавьте в конец:
# Flip webcam video
v4l2-ctl -c vertical_flip=0
v4l2-ctl -c vertical_flip=1
(двойная команда является преднамеренной)
У меня ноутбук Asus K70IO с Ubuntu 16.04. Я давно столкнулся с этой проблемой.
С помощью LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libv4l/v4l1compat.so я исправил проблему для Skype и MS Teams, но не для Chrome.
Чтобы исправить проблему вертикального переворота в Chrome, я написал короткий сценарий bash, основанный на ответе Люцио Lucio Anibal Criollo Rivera.
Запускаю перед открытием хрома.
#!/bin/bash
trap ctrl_c INT
function ctrl_c() {
sudo mv /dev/video0 /dev/video1
sudo mv /dev/video2 /dev/video0
}
sudo modprobe v4l2loopback exclusive_caps=1
sudo mv /dev/video0 /dev/video2
sudo mv /dev/video1 /dev/video0
ffmpeg -f v4l2 -i /dev/video2 -vf "vflip" -f v4l2 /dev/video0
Он создаст фиктивную веб-камеру и установит ее в качестве камеры по умолчанию (это улучшение, которое окончательно устранило проблему для меня).
Пробовал на https://iorestoacasa.work/, и у моих коллег больше не было головной боли.
Поскольку версия Skype 8 и выше - это в основном веб-приложение, старый трюк с libv4l
Библиотека больше не будет работать. Я потерял много часов, чтобы просто узнать, что это больше невозможно.
Так как программного решения не существует, я перешел к аппаратному. Я купил внешнюю веб-камеру... и она работает без нареканий.
Более того: я наконец понял, что встроенная камера в ноутбуках Asus серии K была исключительно низкого качества. Мой внешний ооочень намного лучше. Наконец, через много лет мои звонящие могут видеть меня ясно, а главное: правильно:-)