web-dev-qa-db-fra.com

Comment créer un périphérique V4L2 qui est une version recadrée d'une webcam?

J'ai une webcam Logitech C930e sur /dev/video0. Je peux utiliser ceci pour faire des conférences vidéo (par exemple Jitsi). Cependant, la vidéo de cette webcam est trop élevée et trop large. J'aimerais avoir une version "recadrée" de /dev/video0 Cela ne montre pas la photo de la mer sur le mur.

Tout d'abord, j'ai essayé de définir v4l2 options pour y parvenir, mais n'a pas réussi:

$ 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

Après cela, j'ai suivi une autre idée: j'ai essayé d'utiliser v4l2loopback Pour créer un autre appareil /dev/video2. Après cela, j'aurais essayé d'utiliser ffmpeg pour se connecter /dev/video0 à /dev/video2 (voir https://github.com/umlaeute/v4l2loopback/wiki et https://video.stackexchange.com/questions/4563/how-can--crop -A-Vidéo-with-ffmpeg ).

Alors maintenant, je suis à court d'idées. Quelqu'un peut-il donner des conseils?

3
Markus

Les lignes ci-dessous Créer un appareil vidéo de bouclage /dev/video5. Après que ffmpeg est utilisé pour connecter /dev/video0 à /dev/video5, mais cultiver et hflip le ruisseau sur son chemin.

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