-
Q:
[2026.07.25] 웹캠 Webcam
zharyong 2026.07.25
A:
KDE PLASMA/WAYLAND 환경에서 적당한 웹캠용 프로그램
몇 수십년 동안 사용하지 않았던 웹캠을 당근을 통해서 하나 구입하여 테스트해 보았다. 중고로 구입한 웹캠은 QHD 1944P라는 모델로 고해상도를 지원하는 것이 특징이며, 단돈 1만원에 구입했다.
세월이 많이 흐르다보니 KDE 환경에서 동작하는 프로그램도 많이 바뀌었다. Kamoso를 대표적으로 지원하는 것 같은데, 사실 kamoso는 이전의 kamerka보다도 사용하기도 불편하거니와 설정도 그리 쉬운 편이 아니어서도 이 프로그램 대신에 어떤 프로그램이 적합할 지 찾아보니 webcamoid가 제일 적합해 보였다.
그래서 dnf로 이 패키지를 설치한 후 이 프로그램을 동작시켜 웹캠을 구동해 보니, 상당히 고해상도의 화질에서 매우 부드러운 모션을 지원한다. kamoso는 설정 미숙 탓인지 모르겠으나, 카메라 모션이 상당히 느려서 제대로 쓸 수가 없다.
webcamoid에서 불편한 점은 화상이 반대로 나온다는 것이다. 거울 반사 효과처럼 눈에 보이는대로 화면이 아니라, 좌우가 바뀐 모양으로 나오는데, 이것만 보정할 수 있으면 다른 어느 프로그램보다 이 프로그램이 제일 낫다는 생각이다.
1. USB 장치 lsusb
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 2972:0047 FiiO Electronics Technology FiiO BTA30 PRO
Bus 001 Device 003: ID 0bda:b85b Realtek Semiconductor Corp. Bluetooth Radio
Bus 001 Device 004: ID 18f8:0f97 [Maxxter] Optical Gaming Mouse [Xtrem]
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID c0f4:03f5 Usb KeyBoard Usb KeyBoard
Bus 003 Device 003: ID 0bda:5856 Realtek Semiconductor Corp. HD WEB CAMERA
Bus 003 Device 004: ID 0573:1573 Zoran Co. Personal Media Division (Nogatech) USB Audio and HID
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
2. Video 장치 확인 ls /dev/video*$ ls /dev/video* -l
crw-rw---- 1 root video 81, 0 7월 25 14:58 /dev/video0
crw-rw---- 1 root video 81, 1 7월 25 14:58 /dev/video1
crw-rw---- 1 root video 81, 3 7월 25 14:58 /dev/video2
crw-rw---- 1 root video 81, 2 7월 25 14:58 /dev/video73. camera 기본 정보 확인
$ v4l2-ctl -d /dev/video0 --info
Driver Info:
Driver name : uvcvideo
Card type : HD WEB CAMERA: HD WEB CAMERA
Bus info : usb-0000:04:00.4-2
Driver version : 6.12.74
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Media Driver Info:
Driver name : uvcvideo
Model : HD WEB CAMERA: HD WEB CAMERA
Serial : 200901010001
Bus info : usb-0000:04:00.4-2
Media version : 6.12.74
Hardware revision: 0x00000001 (1)
Driver version : 6.12.74
Interface Info:
ID : 0x03000002
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : HD WEB CAMERA: HD WEB CAMERA
Function : V4L2 I/O
Flags : default
Pad 0x01000007 : 0: Sink
Link 0x02000010: from remote pad 0x100000a of entity 'Extension 4' (Video Pixel Formatter): Data, Enable
d, Immutable
4. current camera settings info$ v4l2-ctl -d /dev/video0 --get-fmt-video
Format Video Capture:
Width/Height : 1280/720
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 2560
Size Image : 1843200
Colorspace : sRGB
Transfer Function : Rec. 709
YCbCr/HSV Encoding: ITU-R 601
Quantization : Default (maps to Limited Range)
Flags :5. camera 지원 해상도및 FPS 확인
$ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'MJPG' (Motion-JPEG, compressed)
Size: Discrete 2560x1440
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1024x768
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 424x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 848x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 960x540
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 2592x1944
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x800
Interval: Discrete 0.033s (30.000 fps)
[1]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 2560x1440
Interval: Discrete 0.500s (2.000 fps)
Size: Discrete 1024x768
Interval: Discrete 0.125s (8.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 424x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 640x360
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 848x480
Interval: Discrete 0.050s (20.000 fps)
Size: Discrete 960x540
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.125s (8.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.200s (5.000 fps)
Size: Discrete 2592x1944
Interval: Discrete 0.500s (2.000 fps)
Size: Discrete 1280x800
Interval: Discrete 0.125s (8.000 fps)6. ffmpeg를 이용한 카메라 지원 포맷 확인
$ ffmpeg -f v4l2 -list_formats all -i /dev/video0
ffmpeg version 6.1.5 Copyright (c) 2000-2026 the FFmpeg developers
built with gcc 15 (PCLinuxOS 15.2.0-1pclos2025)
configuration: --prefix=/usr --enable-shared --enable-pic --libdir=/usr/lib64 --shlibdir=/usr/lib64 --incdir=/us
r/include --extra-cflags=-I/usr/include/nvenc --disable-stripping --enable-postproc --enable-gpl --enable-pthreads
--enable-libtheora --enable-libvorbis --disable-encoder=vorbis --enable-libvpx --enable-runtime-cpudetect --enabl
e-libaom --enable-libdc1394 --enable-librtmp --enable-libspeex --enable-libfreetype --enable-libgsm --enable-libce
lt --enable-libopus --disable-libopencv --enable-libopenjpeg --enable-libaom --enable-libvidstab --enable-libtwola
me --enable-libxavs --enable-frei0r --enable-libmodplug --enable-libass --enable-gnutls --enable-libcdio --enable-
libmfx --enable-libpulse --enable-libv4l2 --enable-opencl --enable-libmp3lame --enable-sndio --enable-libdav1d --e
nable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-libx264 --enable-libx265 --enable-li
bvo-amrwbenc --enable-libxvid --enable-libjxl --enable-decoder=atrac3 --enable-decoder=atrac3p --enable-libwebp --
enable-libfdk-aac --enable-nonfree --enable-cuda --enable-cuvid --enable-nvenc --enable-libzvbi --extra-cflags=-I/
usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64 --enable-libsoxr --enable-ladspa --enable-lcms2 --e
nable-libcodec2 --enable-libass --enable-libdav1d --enable-libdc1394 --enable-libgsm --enable-libiec61883 --enable
-libilbc --enable-libjack --enable-libjxl
libavutil 58. 29.100 / 58. 29.100
libavcodec 60. 31.102 / 60. 31.102
libavformat 60. 16.100 / 60. 16.100
libavdevice 60. 3.100 / 60. 3.100
libavfilter 9. 12.100 / 9. 12.100
libswscale 7. 5.100 / 7. 5.100
libswresample 4. 12.100 / 4. 12.100
libpostproc 57. 3.100 / 57. 3.100
[video4linux2,v4l2 @ 0x558af4935d80] Compressed: mjpeg : Motion-JPEG : 2560x1440 1024x768 320x240 4
24x240 640x360 848x480 960x540 1280x720 640x480 1920x1080 2592x1944 1280x800
[video4linux2,v4l2 @ 0x558af4935d80] Raw : yuyv422 : YUYV 4:2:2 : 2560x1440 1024x768 320x240 4
24x240 640x360 848x480 960x540 1280x720 640x480 1920x1080 2592x1944 1280x8007. ffmpeg를 이용한 웹캠 보기
7.1 720p 화면으로 /dev/video0 장치로 30 프레임 속도로 5초간 캡쳐해서 test.mp4 파일로 저장하기
ffmpeg -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0 -t 5 test.mp4
7.2 high resolution test
ffmpeg -f v4l2 -pix_fmt yuyv422 -framerate 30 -video_size 640x480 -i /dev/video0 -t 3 test_yuyv.mp4
ffmpeg -f v4l2 -framerate 60 -video_size 640x480 -i /dev/video0 -t 3 test_60fps.mp4
ffmpeg -f v4l2 -framerate 30 -video_size 1920x1080 -i /dev/video0 -t 3 test_hd.mp4
7.3 실시간 웹캠 보기ffplay -f v4l2 -framerate 30 -video_size 1280x720 -i /dev/video0
8. v4l2-ctl -l
$ v4l2-ctl -l
User Controls
brightness 0x00980900 (int) : min=-64 max=64 step=1 default=0 value=0
contrast 0x00980901 (int) : min=0 max=100 step=1 default=40 value=40
saturation 0x00980902 (int) : min=0 max=100 step=1 default=64 value=64
hue 0x00980903 (int) : min=-180 max=180 step=1 default=0 value=0
white_balance_automatic 0x0098090c (bool) : default=1 value=1
gamma 0x00980910 (int) : min=100 max=500 step=1 default=300 value=300
gain 0x00980913 (int) : min=1 max=128 step=1 default=64 value=64
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=1 value=1 (50 Hz)
white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=10 default=4600 value=4600 flags=inac
tive
sharpness 0x0098091b (int) : min=0 max=100 step=1 default=50 value=50
backlight_compensation 0x0098091c (int) : min=0 max=2 step=1 default=0 value=0
Camera Controls
auto_exposure 0x009a0901 (menu) : min=0 max=3 default=3 value=3 (Aperture Priority Mode)
exposure_time_absolute 0x009a0902 (int) : min=50 max=10000 step=1 default=166 value=912 flags=inactive
exposure_dynamic_framerate 0x009a0903 (bool) : default=0 value=0
focus_absolute 0x009a090a (int) : min=0 max=1023 step=1 default=68 value=68 flags=inactive
focus_automatic_continuous 0x009a090c (bool) : default=1 value=19.
$ v4l2-ctl --all -d 0
Driver Info:
Driver name : uvcvideo
Card type : HD WEB CAMERA: HD WEB CAMERA
Bus info : usb-0000:04:00.4-2
Driver version : 6.12.74
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Media Driver Info:
Driver name : uvcvideo
Model : HD WEB CAMERA: HD WEB CAMERA
Serial : 200901010001
Bus info : usb-0000:04:00.4-2
Media version : 6.12.74
Hardware revision: 0x00000001 (1)
Driver version : 6.12.74
Interface Info:
ID : 0x03000002
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : HD WEB CAMERA: HD WEB CAMERA
Function : V4L2 I/O
Flags : default
Pad 0x01000007 : 0: Sink
Link 0x02000010: from remote pad 0x100000a of entity 'Extension 4' (Video Pixel Formatter): Data, Enable
d, Immutable
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 3840
Size Image : 4147200
Colorspace : sRGB
Transfer Function : Rec. 709
YCbCr/HSV Encoding: ITU-R 601
Quantization : Default (maps to Limited Range)
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 Video Capture: crop_default, Left 0, Top 0, Width 1920, Height 1080, Flags:
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1920, Height 1080, Flags:
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 5.000 (5/1)
Read buffers : 0
User Controls
brightness 0x00980900 (int) : min=-64 max=64 step=1 default=0 value=0
contrast 0x00980901 (int) : min=0 max=100 step=1 default=40 value=40
saturation 0x00980902 (int) : min=0 max=100 step=1 default=64 value=64
hue 0x00980903 (int) : min=-180 max=180 step=1 default=0 value=0
white_balance_automatic 0x0098090c (bool) : default=1 value=1
gamma 0x00980910 (int) : min=100 max=500 step=1 default=300 value=300
gain 0x00980913 (int) : min=1 max=128 step=1 default=64 value=64
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=1 value=1 (50 Hz)
0: Disabled
1: 50 Hz
2: 60 Hz
white_balance_temperature 0x0098091a (int) : min=2800 max=6500 step=10 default=4600 value=4600 flags=inac
tive
sharpness 0x0098091b (int) : min=0 max=100 step=1 default=50 value=50
backlight_compensation 0x0098091c (int) : min=0 max=2 step=1 default=0 value=0
Camera Controls
auto_exposure 0x009a0901 (menu) : min=0 max=3 default=3 value=3 (Aperture Priority Mode)
1: Manual Mode
3: Aperture Priority Mode
exposure_time_absolute 0x009a0902 (int) : min=50 max=10000 step=1 default=166 value=912 flags=inactive
exposure_dynamic_framerate 0x009a0903 (bool) : default=0 value=0
focus_absolute 0x009a090a (int) : min=0 max=1023 step=1 default=68 value=68 flags=inactive
focus_automatic_continuous 0x009a090c (bool) : default=1 value=1
상기 출처 : https://coding-shop.tistory.com/733
- Q: [2026.07.25] LGU+ Settop Box의 디즈니 해상도 UHD 지원하지 못하는 문제 zharyong 2026.07.25
- Q: [2026.07.22] qemu-android-x86 RPM 제작 zharyong 2026.07.22
- Q: [2026.07.21] 심심풀이 땅콩으로 Cest.Linux 환경에서 Android app를 구동하는 방법을 모색하다. zharyong 2026.07.21
- Q: [2026.07.19] rpm 패키지수 최소한으로 살빼기 전략 zharyong 2026.07.19
- Q: [2026.07.19] Wayland의 구글 크롬에서 한영 전환되지 않는 문제점 수정 zharyong 2026.07.19
- Q: [2026.07.18] 셋탑박스 미러링의 장단점 zharyong 2026.07.19
- Q: [2026.07.18] dracut를 이용한 배포판용 nitramfs.img 이미지 제작 zharyong 2026.07.18





