web-dev-qa-db-ja.com

Webカメラのクロップバージョンであるv4l2デバイスを作成するにはどうすればよいですか?

/dev/video0にLogitech Webcam C930eを持っています。これをビデオ会議(jitsiなど)に使用できます。ただし、このWebカメラからのビデオは高すぎ、広すぎます。壁に海辺の写真が表示されない/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 )。

だから今、私はアイデアがありません。誰かがアドバイスできますか?

2
Markus

以下の行はループバックビデオデバイスを作成します/dev/video5。その後、ffmpegを使用して接続します/dev/video0から/dev/video5、ただし途中でストリームをトリミングしてhflipします。

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
4
Markus