![스크립트의 v4l2-ctl 오류](https://linux55.com/image/47238/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%9D%98%20v4l2-ctl%20%EC%98%A4%EB%A5%98.png)
다음과 같이 명령줄에서 v4l2-ctl을 사용할 수 있습니다.
v4l2-ctl -d /dev/video1 -c focus_auto=0
v4l2-ctl -d /dev/video1 -c exposure_auto=0
하지만 파일에서 스크립트로 실행하면 오류가 발생합니다. 예를 들어 script.sh
다음 두 줄을 포함하고 이를 사용하여 실행 하거나 sh script.sh
C++ 함수에서 system()
호출합니다 .
VIDIOC_S_EXT_CTRLS: failed: Invalid argument
Error setting MPEG controls: Invalid argument
이 오류는 왜 발생합니까?
답변1
이 명령을 실행할 때 v4l2-ctl
루트로 실행하고 있습니까?
이 시도 script.sh
:
#!/bin/bash
sudo /usr/bin/v4l2-ctl -d /dev/video1 -c focus_auto=0
sudo /usr/bin/v4l2-ctl -d /dev/video1 -c exposure_auto=0
/usr/bin
해당 위치에 없으면 v4l2-ctl
다른 디렉터리 위치에 변경하십시오.
답변2
sleep
v4l2-ctl 명령 사이에 약간의 지연을 추가 해야 한다고 생각합니다 .
v4l2-ctl -d /dev/video1 -c focus_auto=0
sleep 1
v4l2-ctl -d /dev/video1 -c exposure_auto=0
이는 스크립트에서 v4l2-ctl을 사용하는 다양한 시나리오에서 작동합니다.
답변3
왜 해당 오류가 발생하는지 모르겠지만 다음 줄은 오류 없이 작동하며 더 간결해 보입니다.
v4l2-ctl -d /dev/video1 -c focus_auto=0 -c exposure_auto=0
또한 제가 틀렸다면 정정해 주시기 바랍니다. 카메라 장비는 보통 짝수를 요구하잖아요? (예 /dev/video0, /dev/video2, /dev/video4 ...
) 이것이 귀하 /dev/video1
의 기기인지 100% 확신하십니까?