我有一个 Logitech 网络摄像头 C930e /dev/video0
。我可以用它来进行视频会议(例如jitsi)。然而,该网络摄像头拍摄的视频太高、太宽泛。我想要一个“裁剪”版本,/dev/video0
不显示墙上的海边图片。
首先,我尝试设置v4l2
选项来实现此目的,但没有成功:
$ v4l2-ctl -d /dev/video0 --get-cropcap
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 360
Default : Left 0, Top 0, Width 640, Height 360
Pixel Aspect: 1/1
$ v4l2-ctl -d /dev/video0 --get-selection target=crop_bounds
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 360, Flags:
$ v4l2-ctl -d /dev/video0 --set-selection target=crop_bounds,flags=crop,top=10,left=10,width=100,height=100
VIDIOC_S_SELECTION: failed: Inappropriate ioctl for device
之后我又产生了另一个想法:我尝试用它v4l2loopback
来创建另一个设备/dev/video2
。之后我会尝试使用ffmpeg
连接/dev/video0
到/dev/video2
(参见https://github.com/umlaeute/v4l2loopback/wiki和https://video.stackexchange.com/questions/4563/how-can-i-crop-a-video-with-ffmpeg)。
所以现在,我没有主意了。有人可以给建议吗?
答案1
下面的行创建一个环回视频设备/dev/video5
。之后ffmpeg
用于连接/dev/video0
到/dev/video5
,但在途中裁剪和翻转流。
sudo apt-get install v4l2loopback-dkms
sudo modprobe v4l2loopback video_nr=5
ffmpeg -i /dev/video0 -f v4l2 -pix_fmt yuv420p -filter:v "hflip,crop=400:400:0:0" /dev/video5