하나의 물리적 장치가 두 개의 /dev/video 장치를 마운트합니다. 이로 인해 fswebcam에서 ioctl 오류가 발생합니까? [복사]

하나의 물리적 장치가 두 개의 /dev/video 장치를 마운트합니다. 이로 인해 fswebcam에서 ioctl 오류가 발생합니까? [복사]

현재 문제 및 증상: 나는 그것을 각각 찾았다.개인의Raspbian에서 물리적 USB 웹캠을 연결했는데,한 쌍그런/개발자/비디오장치가 생성되었습니다. 1개의 실제 카메라를 이용하여 이미지를 캡쳐하려고 할 때웹캠다음 중 하나를 지정하여/개발자/비디오한 쌍의 장치에서 그 중 하나는 다음과 같은 오류로 인해 실패합니다.I/W 오류다른 하나는 성공할 것입니다.

내가 도움을 원하는 것: 오류 생성을 방지하고 호출할 수 있도록 어떤 쌍이 실패할지 감지/미리 결정하는 방법을 찾고 있습니다.웹캠회원에게 이의를 제기하다/개발자/비디오한 쌍이 작동합니다.

배경: 멀티 카메라 어레이에 사용하는 USB 웹캠이 몇 개 있습니다. 루프의 각 카메라에서 이미지를 캡처하고 싶습니다. 나는 각각을 반복하려고 시도했다./개발자/비디오장치를 검색하고 이 페어링을 발견했습니다./개발자/비디오각 카메라의 장치 이름은 성공하고 다른 카메라는 실패합니다.

이것웹캠호출 실패(즉, ioctl 오류 발생)는 다음 메시지를 생성합니다.

입력 0을 쿼리할 수 없습니다.

VIDIOC_ENUMINPUT: 장치의 ioctl이 부적절합니다.

전체 요청: 누가 나에게 간단한 방법을 제공할 수 있나요?grep또는찾다/dev/video* 또는 /sys/class/video4linux/에 있는 모든 "유효한" 장치/fswebcam에서 요청한 유효한 장치가 아닌 경우 오류 없이 tree 또는 간단한 셸 명령을 사용하여 알려줄 수 있습니까?

추가 정보: 아래에는 출력이 나와 있습니다.v4l2-ctl각 장치를 조회하여 표시됩니다.

이것v4l2-ctl출력/개발자/비디오*그럴 것이다성공:

$ v4l2-ctl --device=/dev/video0 --all
Driver Info (not using libv4l2):
    Driver name   : uvcvideo
    Card type     : UNIQUESKY_CAR_CAMERA: Integrate
    Bus info      : usb-3f980000.usb-1.2.1
    Driver version: 4.19.58
    Capabilities  : 0x84A00001
        Video Capture
        Streaming
        Extended Pix Format
        Device Capabilities
    Device Caps   : 0x04200001
        Video Capture
        Streaming
        Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
    Width/Height      : 1920/1080
    Pixel Format      : 'MJPG'
    Field             : None
    Bytes per Line    : 0
    Size Image        : 4147200
    Colorspace        : sRGB
    Transfer Function : Default
    YCbCr/HSV Encoding: Default
    Quantization      : Default
    Flags             : 
Crop Capability Video Capture:
    Bounds      : Left 0, Top 0, Width 1920, Height 1080
    Default     : Left 0, Top 0, Width 1920, Height 1080
    Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 1920, Height 1080
Selection: crop_bounds, Left 0, Top 0, Width 1920, Height 1080
Streaming Parameters Video Capture:
    Capabilities     : timeperframe
    Frames per second: 30.000 (30/1)
    Read buffers     : 0
                     brightness (int)    : min=-64 max=64 step=1 default=-8193 value=0
                       contrast (int)    : min=0 max=95 step=1 default=57343 value=0
                     saturation (int)    : min=0 max=100 step=1 default=57343 value=80
                            hue (int)    : min=-2000 max=2000 step=1 default=-8193 value=0
 white_balance_temperature_auto (bool)   : default=1 value=1
                          gamma (int)    : min=64 max=300 step=1 default=57343 value=84
                           gain (int)    : min=1 max=8 step=1 default=57343 value=1
           power_line_frequency (menu)   : min=0 max=2 default=1 value=1
      white_balance_temperature (int)    : min=2800 max=6500 step=1 default=57343 value=3980 flags=inactive
                      sharpness (int)    : min=1 max=7 step=1 default=57343 value=2
         backlight_compensation (int)    : min=0 max=128 step=0 default=20478 value=0
                  exposure_auto (menu)   : min=0 max=3 default=0 value=3
              exposure_absolute (int)    : min=10 max=626 step=1 default=156 value=156 flags=inactive

다음 문제를 일으키는 대체 장치를 사용해 보면 다음이 반환됩니다.다음 오류로 인해 ioctl이 실패했습니다.

$ v4l2-ctl --device=/dev/video1 --all
Driver Info (not using libv4l2):
    Driver name   : uvcvideo
    Card type     : UNIQUESKY_CAR_CAMERA: Integrate
    Bus info      : usb-3f980000.usb-1.2.1
    Driver version: 4.19.58
    Capabilities  : 0x84A00001
        Video Capture
        Streaming
        Extended Pix Format
        Device Capabilities
    Device Caps   : 0x04A00000
        Streaming
        Extended Pix Format
Priority: 2
 .

두 v4l2-ctl 출력 간의 중요한 차이점은 "비디오 캡처" 기능이 두 번째 /dev/video* 개체의 "Device Caps" 아래에 존재하지 않지만 첫 번째 장치의 "Device Caps" 아래에 존재한다는 것입니다. 확실히웹캠장치에 "비디오 캡처" 기능이 있을 것으로 예상하고 요청하고 "장치 캡"이 없으면 IOCTL 오류가 발생합니다.

불행하게도 v4l2-cntl 출력은 매우 장황하며 "비디오 캡처"라는 용어가 "기능" 아래의 두 목록에 나타납니다. 그러나 한 가지 경우에만 "Device Caps" 아래에 다시 나타납니다.

이로 인해 grep과 같은 것을 사용하여 테스트를 작성하는 것이 더 어려워지고 이러한 보고서 형식의 변경으로 인해 이를 기반으로 하는 테스트가 불안정해질 수 있다는 점이 걱정됩니다. 기기캡만 검색하는 방법이 있나요?

이 기능을 갖춘 카메라 목록을 생성하고 싶지만 어떻게 해야 할지 모르겠습니다. 현재 가장 좋은 해결책은 "비디오 캡처"가 두 번 나열된 것을 찾는 것입니다.

답변1

카메라의 경우 일반적으로 첫 번째 장치는 실제 공간을 캡처하는 것입니다.
따라서 ls /dev/video목록이 생성되어 목록의 첫 번째 항목을 캡처합니다.

관련 정보