'Linux API/v4l'에 해당되는 글 5건

  1. 2022.07.13 v4l2 debug
  2. 2022.07.06 v4l2-ctl 밝기 조절
  3. 2017.04.19 v4l2 timestamp
  4. 2015.09.13 uv4l
  5. 2009.12.06 리눅스에 웹캠 연결시 인식 5
Linux API/v4l2022. 7. 13. 19:47

v4l2 디버깅을 위해서는 아래와 같이 설정해주면 dmesg에 출력되게 된다.

# echo 0x1f > /sys/class/video4linux/video1/dev_debug

[링크 : https://stackoverflow.com/questions/24330671/v4l2-kernel-space-debugging]

 

guvcview 유틸리티를 이용해서 테스트.

하단의 exposure, auto / (absolute) / Auto Priority 관련 설정을 바꿀때 나오는 값 확인

 

Exposure, Auto - Aperture Priority Mode

[ 1041.346246] video2: VIDIOC_DQEVENT: type=0x3, pending=0, sequence=13, id=10094850, timestamp=1040.623934215
[ 1041.346259] changes=0x3, type=1, value=3216, flags=0x10, minimum=39, maximum=10000, step=1, default_value=156
[ 1041.346272] video2: VIDIOC_DQEVENT: error -2: type=0x0, pending=0, sequence=0, id=0, timestamp=0.000000000

 

Exposure, Auto - Manual / 3216

[ 1128.312839] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0901/0x3
[ 1128.312866] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0901/0x3

 

Exposure (Absolute)

[  621.732496] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xe55
[  621.733321] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xe55
[  621.749803] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xe56
[  621.750586] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xe56
[  621.784790] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xcbf
[  621.785731] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xcbf
[  621.802333] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xcc0
[  621.803150] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xcc0
[  621.833353] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xc90
[  621.834204] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xc90
[  621.849972] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xc90
[  621.850772] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0902/0xc90

 

Exposure, Auto Priority (선택)

[ 1464.855961] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0903/0x1
[ 1464.855989] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0903/0x1

 

Exposure, Auto Priority (미선택)

[ 1519.669796] video2: VIDIOC_S_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0903/0x0
[ 1519.669856] video2: VIDIOC_G_EXT_CTRLS: which=0x9a0000, count=1, error_idx=0, request_fd=0, id/val=0x9a0903/0x0

 

'Linux API > v4l' 카테고리의 다른 글

v4l2-ctl 밝기 조절  (0) 2022.07.06
v4l2 timestamp  (0) 2017.04.19
uv4l  (0) 2015.09.13
리눅스에 웹캠 연결시 인식  (5) 2009.12.06
Posted by 구차니
Linux API/v4l2022. 7. 6. 15:21

 

$ v4l2-ctl

General/Common options:
  --all              display all information available
  -C, --get-ctrl=<ctrl>[,<ctrl>...]
                     get the value of the controls [VIDIOC_G_EXT_CTRLS]
  -c, --set-ctrl=<ctrl>=<val>[,<ctrl>=<val>...]
                     set the value of the controls [VIDIOC_S_EXT_CTRLS]
  -D, --info         show driver info [VIDIOC_QUERYCAP]
  -d, --device=<dev> use device <dev> instead of /dev/video0
                     if <dev> starts with a digit, then /dev/video<dev> is used
  -e, --out-device=<dev> use device <dev> for output streams instead of the
                     default device as set with --device
                     if <dev> starts with a digit, then /dev/video<dev> is used
  -h, --help         display this help message
  --help-all         all options
  --help-io          input/output options
  --help-misc        miscellaneous options
  --help-overlay     overlay format options
  --help-sdr         SDR format options
  --help-selection   crop/selection options
  --help-stds        standards and other video timings options
  --help-streaming   streaming options
  --help-tuner       tuner/modulator options
  --help-vbi         VBI format options
  --help-vidcap      video capture format options
  --help-vidout      vidout output format options
  --help-edid        edid handling options
  -k, --concise      be more concise if possible.
  -l, --list-ctrls   display all controls and their values [VIDIOC_QUERYCTRL]
  -L, --list-ctrls-menus
                     display all controls and their menus [VIDIOC_QUERYMENU]
  -r, --subset=<ctrl>[,<offset>,<size>]+
                     the subset of the N-dimensional array to get/set for control <ctrl>,
                     for every dimension an (<offset>, <size>) tuple is given.
  -w, --wrapper      use the libv4l2 wrapper library.
  --list-devices     list all v4l devices
  --log-status       log the board status in the kernel log [VIDIOC_LOG_STATUS]
  --get-priority     query the current access priority [VIDIOC_G_PRIORITY]
  --set-priority=<prio>
                     set the new access priority [VIDIOC_S_PRIORITY]
                     <prio> is 1 (background), 2 (interactive) or 3 (record)
  --silent           only set the result code, do not print any messages
  --sleep=<secs>     sleep <secs>, call QUERYCAP and close the file handle
  --verbose          turn on verbose ioctl status reporting

 

$ v4l2-ctl -l -d /dev/video2
                     brightness 0x00980900 (int)    : min=-64 max=64 step=1 default=0 value=0
                       contrast 0x00980901 (int)    : min=0 max=95 step=1 default=5 value=5
                     saturation 0x00980902 (int)    : min=0 max=100 step=1 default=60 value=60
                            hue 0x00980903 (int)    : min=-2000 max=2000 step=1 default=0 value=0
 white_balance_temperature_auto 0x0098090c (bool)   : default=1 value=1
                          gamma 0x00980910 (int)    : min=100 max=300 step=1 default=100 value=100
                           gain 0x00980913 (int)    : min=1 max=8 step=1 default=1 value=1
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=2
      white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4600 flags=inactive
                      sharpness 0x0098091b (int)    : min=1 max=7 step=1 default=2 value=2
         backlight_compensation 0x0098091c (int)    : min=0 max=1 step=1 default=1 value=1
                  exposure_auto 0x009a0901 (menu)   : min=0 max=3 default=3 value=1
              exposure_absolute 0x009a0902 (int)    : min=10 max=626 step=1 default=156 value=25

 

v4l2-ctl -d /dev/video2 -c exposure_absolute=70
v4l2-ctl -d /dev/video2 -c exposure_absolute=600

[링크 : https://thirdnsov.tistory.com/107]

'Linux API > v4l' 카테고리의 다른 글

v4l2 debug  (0) 2022.07.13
v4l2 timestamp  (0) 2017.04.19
uv4l  (0) 2015.09.13
리눅스에 웹캠 연결시 인식  (5) 2009.12.06
Posted by 구차니
Linux API/v4l2017. 4. 19. 18:14

timestamp는 카메라 따라 맘대로 라는 건데

하드웨어적으로 비디오 싱크를 맞추는 것도 아니니

스테레오 카메라를 위한 보조 기능으로 쓸수도 없을지도?


According to http://comments.gmane.org/gmane.linux.drivers.video-input-infrastructure/39892 some v4l2 drivers (including the UVC one) do not use the realtime clock (wall time) but rather a monotonic clock that counts from a not specified point in time. On Linux, this is the boot time (i.e. uptime), however (and I suspect this is the cause of your mismatch) only the time that the computer was actually running (i.e. this clock does not run when the computer is suspended). 

[링크 : http://stackoverflow.com/questions/10266451/where-does-v4l2-buffer-timestamp-value-starts-counting]

    [링크 : http://stackoverflow.com/questions/10261537/timestamp-for-v4l2-image-capture]

'Linux API > v4l' 카테고리의 다른 글

v4l2 debug  (0) 2022.07.13
v4l2-ctl 밝기 조절  (0) 2022.07.06
uv4l  (0) 2015.09.13
리눅스에 웹캠 연결시 인식  (5) 2009.12.06
Posted by 구차니
Linux API/v4l2015. 9. 13. 16:03

API는 아니지만 분류할 곳이 모호하니..


일단 라즈베리 파이에서 CSI를 통해 영상을 받아서 

kernel space v4l driver(offcial)로 받으려고 했던 노가다는 실패했는데

user space v4l로 하는 글들이 갑자기 잔뜩 보여서 나중에 시도할 예정..


엥? 인증키?

V4L2(Video4Linux2) 드라이버 활성화

pi@openmake ~ $ sudo modprobe bcm2835-v4l2


V4L2(Video4Linux2) 인증키 설치

pi@rasplay ~ $ wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc


[링크 : http://www.rasplay.org/?p=6257] 

[링크 : http://www.rasplay.org/?p=6277]


How to install or upgrade UV4L on Ubuntu Raring Ringtail


To install UV4L open a terminal and type the following commands:

$ wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc


Add the following line to the file /etc/apt/sources.list :

deb [arch=amd64] http://www.linux-projects.org/listing/uv4l_repo/raring/ raring main


$ sudo apt-get update

$ sudo apt-get install libfuse3 uv4l


Now the UV4L core component is installed. 


Optionally, each driver can be installed separately from the core module:


$ sudo apt-get install uv4l-uvc

$ sudo apt-get install uv4l-xscreen

$ sudo apt-get install uv4l-mjpegstream

[링크 : http://www.linux-projects.org/modules/sections/index.php?op=viewarticle&artid=12]


$ wget http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc && sudo apt-key add ./lrkey.asc

$ sudo vi /etc/apt/sources.list

deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main

$ sudo apt-get install uv4l uv4l-raspicam


$ sudo apt-get install uv4l-raspicam

패키지 목록을 읽는 중입니다... 완료

의존성 트리를 만드는 중입니다

상태 정보를 읽는 중입니다... 완료

다음 새 패키지를 설치할 것입니다:

  uv4l-raspicam

0개 업그레이드, 1개 새로 설치, 0개 제거 및 4개 업그레이드 안 함.

1,471 k바이트 아카이브를 받아야 합니다.

이 작업 후 3,890 k바이트의 디스크 공간을 더 사용하게 됩니다.

받기:1 http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy/main uv4l-raspicam armhf 1.9.31 [1,471 kB]

내려받기 1,471 k바이트, 소요시간 4초 (336 k바이트/초)

Selecting previously unselected package uv4l-raspicam.

(데이터베이스 읽는중 ...현재 80650개의 파일과 디렉터리가 설치되어 있습니다.)

uv4l-raspicam 패키지를 푸는 중입니다 (.../uv4l-raspicam_1.9.31_armhf.deb에서) ...

man-db에 대한 트리거를 처리하는 중입니다 ...

uv4l-raspicam (1.9.31) 설정하는 중입니다 ...


$ sudo apt-get install uv4l
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지를 설치할 것입니다:
  uv4l
0개 업그레이드, 1개 새로 설치, 0개 제거 및 4개 업그레이드 안 함.
558 k바이트 아카이브를 받아야 합니다.
이 작업 후 1,872 k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy/main uv4l armhf 1.9.8 [558 kB]
내려받기 558 k바이트, 소요시간 3초 (180 k바이트/초)
Selecting previously unselected package uv4l.
(데이터베이스 읽는중 ...현재 80640개의 파일과 디렉터리가 설치되어 있습니다.)
uv4l 패키지를 푸는 중입니다 (.../archives/uv4l_1.9.8_armhf.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...

uv4l (1.9.8) 설정하는 중입니다 ... 


found this thread when searching for a hardware encoder, not for c920 issues.

[링크 : http://raspberrypi.stackexchange.com/questions/4412/streaming-h264-with-logitech-c920] 


if you try ffmpeg instead of vlc for playback, you will probably encounter this problem: https://ffmpeg.org/trac/ffmpeg/ticket/1387

[링크 : https://wiki.matthiasbock.net/index.php/Logitech_C920,_streaming_H.264]




결론은.. v4l firmware 쪽의 문제로 업데이트 하고 그러라는데..

재발된건지..알수가 없다. 대부분 스트리밍을 위해서 cvlc로 live 영상 없이 하다 보니.. 차이점이 보이기도 하고

pi-cam과 usb webcam의 차이인거 같기도 하고...

'Linux API > v4l' 카테고리의 다른 글

v4l2 debug  (0) 2022.07.13
v4l2-ctl 밝기 조절  (0) 2022.07.06
v4l2 timestamp  (0) 2017.04.19
리눅스에 웹캠 연결시 인식  (5) 2009.12.06
Posted by 구차니
Linux API/v4l2009. 12. 6. 19:41
  [CAMEL PC-100 : http://blog.danawa.com/prod/?prod_c=956003]
  [더불정보기술 X-LUK DBC-UP : http://blog.danawa.com/prod/?prod_c=911980]

위에 두녀석을 다시 꼽아 보니 둘다 video0가 생성이 된다.
CAMEL PC-100은 내장 마이크/사운드 장치가 있고
X-LUK DBC-UP은 내장 마이크 조차 없는 녀석이다(단지 PC용 monitor 프로그램이 있어서 산것일뿐 ㄱ-)

아무튼 /dev를 비교해보니 아래와 같이 추가가 되었다.

 CAMEL PC-10  더불정보기술 X-LUK DBC-UP
/dev
crw-rw----+ 1 root audio    14,  20 2009-12-06 19:22 audio1
crw-rw----+ 1 root audio    14,  19 2009-12-06 19:22 dsp1
crw-rw----+ 1 root audio    14,  16 2009-12-06 19:22 mixer1
drwxr-xr-x  4 root root          80 2009-12-06 19:22 v4l
crw-rw----+ 1 root video    81,   0 2009-12-06 19:22 video0

~$ tree /dev/v4l
/dev/v4l
|-- by-id
|   `-- usb-ARKMICRO_USB2.0_PC_CAMERA-video-index0 -> ../../video0
`-- by-path
    `-- pci-0000:00:10.4-usb-0:3:1.0-video-index0 -> ../../video0
/dev



drwxr-xr-x  4 root root          80 2009-12-06 19:30 v4l
crw-rw----+ 1 root video    81,   0 2009-12-06 19:30 video0

$ tree /dev/v4l
/dev/v4l
|-- by-id
|   `-- usb-Vimicro_Corp._PC_Camera-video-index0 -> ../../video0
`-- by-path
    `-- pci-0000:00:10.1-usb-0:1:1.0-video-index0 -> ../../video0

아무튼, video0 장치는 둘다 생기고, video4linux 장비로 인식을 한다. (ffmpeg이 왜 안되는겨 ㅠ.ㅠ)


CAMEL PC-10
$ ffmpeg -y -f video4linux -r 30 -s 320x240 -i /dev/video0 http://localhost:8090/feed1.ffm
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5+svn20090706-2ubuntu2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Oct 13 2009 22:15:16, gcc: 4.4.1
[video4linux @ 0x85222c0]VIDIOCSWIN: Bad address
/dev/video0: I/O error occurred
Usually that means that input file is truncated and/or corrupted.


더불정보기술 X-LUK DBC-UP
$ ffmpeg -y -f video4linux -r 30 -s 320x240 -i /dev/video1 http://localhost:8090/feed1.ffm
FFmpeg version SVN-r19352-4:0.5+svn20090706-2ubuntu2, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5+svn20090706-2ubuntu2 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --extra-cflags=-I/build/buildd/ffmpeg-0.5+svn20090706/debian/include --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 0 / 52.20. 0
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Oct 13 2009 22:15:16, gcc: 4.4.1
Input #0, video4linux, from '/dev/video1':
  Duration: N/A, start: 1260102822.110153, bitrate: 27647 kb/s
    Stream #0.0: Video: rawvideo, yuv420p, 320x240, 27647 kb/s, 30 tbr, 1000k tbn, 30 tbc
Output #0, ffm, to 'http://localhost:8090/feed1.ffm':
    Stream #0.0: Video: mpeg1video, yuv420p, 320x240, q=3-31, 512 kb/s, 1000k tbn, 30 tbc
Stream mapping:
  Stream #0.0 -> #0.0
Press [q] to stop encoding
[mpeg1video @ 0x9940160]rc buffer underflow
VIDIOCMCAPTURE: Invalid argument
frame=    1 fps=  0 q=31.7 Lsize=      12kB time=10000000000.00 bitrate=   0.0kbits/s
video:8kB audio:0kB global headers:0kB muxing overhead 54.352468%



2010.02.18 추가

열화와 같은 성원(?)으로 드라이버 및 프로그램을 올려 놓습니다.
X-LUK DBC-UP 에는 xp용 드라이버와 감시프로그램이
vista 에는 vista용 드라이버가 들어있습니다.


'Linux API > v4l' 카테고리의 다른 글

v4l2 debug  (0) 2022.07.13
v4l2-ctl 밝기 조절  (0) 2022.07.06
v4l2 timestamp  (0) 2017.04.19
uv4l  (0) 2015.09.13
Posted by 구차니