일반화하다

일반화하다

나는 USB 웹캠을 가지고 있는데 그것을 연결하면 차선의 결과가 나옵니다. (Linux는 최고라고 생각하는 자체 V4L2 설정을 적용하는 것 같지만 그렇지 않습니다.) 주로 낮은 FPS에서 실행됩니다. 하지만 Guvcview를 열고 메뉴에서 "설정" -> "하드웨어 기본값"을 선택하고 약간의 수정을 추가하면 더 높은 FPS와 전반적으로 더 나은 품질을 얻을 수 있습니다.

Guvcview를 닫았다가 다시 열면 Guvcview의 설정이 재설정되지만 변경 사항은 화상 채팅 소프트웨어와 같은 다른 응용 프로그램에서는 계속 작동합니다. 그런데 웹캠을 뽑으면 모든 변경사항이 사라지고, 다시 연결하면 품질이 또 나빠집니다.

지금 내가 하는 일은 Guvcview의 변경 사항을 .gpfl 파일로 저장하는 것입니다(메뉴->설정->프로필 저장). 웹캠을 다시 연결할 때마다 Guvcview를 열고 "구성 로드" 파일 "구성 파일 로드"를 사용합니다.

이 설정을 다시 수행하지 않고 이 특정 비디오 장치에만 적용하고 다른 장치에는 적용하지 않도록 설정을 유지하려면 어떻게 해야 합니까?

답변1

당신은 할 수 없습니다. 정전 후 모든 카메라는 기본 설정으로 돌아갑니다. (즉, 다시 연결하고 컴퓨터를 다시 시작하는 등) 이것이 하드웨어의 특성입니다.

답변2

이것을 시도해 보십시오 ❗ (아직 하지 않았다면...) Logitech C920을 사용하여 Debian 11 및 Ubuntu 22.04에서 이것을 테스트했습니다. 저는 데비안 시스템에서 매일 사용합니다. 일반적으로 나는 Linux에서 "할 수 없는" 일을 믿지 않습니다.

일반화하다

  1. Linux 장치의 이름을 알아보세요
  2. 로그인 시 실행할 스크립트 만들기
  3. Linux 자동 시작에서 스크립트를 가리킵니다.

세부 사항

Linux 장치의 이름을 알아보세요

터미널에서: 없으면 설치하세요.v4l-utils. 그런 다음 다음 명령을 실행하십시오.

v4l2-ctl --list-devices

다음과 유사한 출력이 표시됩니다.

HD Pro Webcam C920 (usb-0000:00:14.0-10.3):
    /dev/video2
    /dev/video3
    /dev/media1

USB Video: USB Video (usb-0000:00:14.0-10.4):
    /dev/video4
    /dev/video5
    /dev/media2

내 경우에는 웹캠(Logitech C920)을 사용하므로 /dev/video2다음 스크립트에서 이를 지정하겠습니다.

로그인 시 실행할 bash 스크립트 만들기

이를 수행하는 방법에는 여러 가지가 있습니다. 다음은 두 가지입니다.

권한을 얻은 후 sudo스크립트를 /usr/local/bin.나는 내 이름으로 지정했습니다.c920.sh

옵션 1: guvcview 사용

예:

#!/bin/bash

sleep 10
guvcview -d /dev/video2 --profile=<profile_name>.gpfl &
sleep 1
pkill -f "guvcview"

프로필 이름을 프로필을 저장한 이름으로 변경하고 경로를 포함합니다.

이 스크립트는 guvcview를 실행하고 올바른 구성 파일을 사용하여 필요한 장치를 지정합니다. 로그인할 때 많은 일을 시작할 경우를 대비해 수면 시간을 추가했습니다. 필요에 맞게 조정하세요. 그런 다음 스크립트는 guvcview 프로세스를 종료합니다. 그게 다야.

man guvcview좋은 것들이 많이 있습니다.

옵션 2: v4l-utils 사용

#!/bin/bash
sleep 10
v4l2-ctl -d /dev/video2 -c brightness=125
v4l2-ctl -d /dev/video2 -c contrast=126
v4l2-ctl -d /dev/video2 -c saturation=115
v4l2-ctl -d /dev/video2 -c white_balance_temperature_auto=0
v4l2-ctl -d /dev/video2 -c gain=175
v4l2-ctl -d /dev/video2 -c power_line_frequency=2
v4l2-ctl -d /dev/video2 -c white_balance_temperature=4515
v4l2-ctl -d /dev/video2 -c sharpness=128
v4l2-ctl -d /dev/video2 -c backlight_compensation=0
v4l2-ctl -d /dev/video2 -c exposure_auto=1
v4l2-ctl -d /dev/video2 -c exposure_absolute=250
v4l2-ctl -d /dev/video2 -c exposure_auto_priority=0
v4l2-ctl -d /dev/video2 -c focus_auto=0

참고: 이 프로그램에는 2024년 1월 현재 컨트롤 이름이 다른 최신 버전이 있습니다. 새로운 구성에 대해서는 이 문서의 끝부분을 참조하세요.

참고: 저는 두 번째 옵션을 선택했습니다.guvcview다른 프로그램과 충돌하여 다른 결과가 나올 수 있습니다. 한 번에 하나의 웹캠 구성 프로그램만 사용해 보십시오. 즉, 충돌이 발생하는 경우(게인과 같이 설정 값이 갑자기 변경되는 경우) 즐겨찾는 설정을 찾을 수 있습니다.guvcview그런 다음 프로그램을 제거하고 다음 명령을 사용하여 설정을 구성하십시오.v4l-utils도 1에 도시된 바와 같이. vl4는 실제로 내가 사용하는 것이며 이러한 설정은 내 연구실(어두운 배경)에서 작동하지만 조정이 필요할 수도 있습니다! 또한 해상도와 FPS를 고려하지 않습니다. 그러나 다른 프로그램을 사용하여 이를 설정하면 Linux "메모리"에 남아 있어야 합니다.

스크립트를 실행 가능하게 만듭니다.chmod +x c920.sh

Linux 자동 시작에서 스크립트를 가리킵니다.

이를 수행하는 방법에는 여러 가지가 있습니다. 여기서는 데스크탑 항목을 사용하고 있습니다. 이동하여 /etc/xdg/autostart.desktop 파일을 만듭니다. c920.desktop이름으로 선택했어요 .

다음을 추가하세요.

[Desktop Entry]
Type=Application
Exec=/usr/local/bin/c920.sh

로그아웃하고 다시 시작해 보세요. 작동하는지 확인하세요

이 솔루션은 단지 가능성일 뿐입니다. Linux에는 여러 가지가 있습니다!

여러 개의 비디오 장치와 여러 경로가 있는 경우 불안정한 문제가 발생할 수 있습니다. 문제해결을 준비하세요! 일반적으로 이는 두 개의 웹캠 구성 프로그램 사이에 충돌이 있음을 의미합니다. udev 규칙이나 Linux 서비스의 단위 파일을 살펴보는 것도 고려해 볼 수 있습니다. 자세한 내용은 아래 링크를 참조하세요. 누군가 .bashrc에 스크립트(명령)를 넣는 것에 대해 언급했지만 for 루프에 통합하지 않는 한 bash 쉘/터미널을 열 때마다 실행되기 때문에 문제가 있습니다. 또한 일부 사람들은 C922 및/또는 Brio(특히 Ubuntu에서)를 사용하여 더 나은 행운을 누리기도 합니다.

이 링크v4l-utils일반적으로 Linux에서 웹캠을 사용하고 설정하는 방법에 대한 많은 정보가 있습니다.

최종 참고 사항: 이상적인 세상에서는 Logitech, Razer, Rode 등과 같은 회사가 Linux 커뮤니티를 수용할 것입니다. 단순한 GUI 인터페이스와 드라이버에 대한 요구사항은 높지 않다고 생각합니다. 저는 .deb 버전을 선택하여 부팅하겠습니다!

관련 정보