私はLogitech c920カメラを所有しており、1080pで少なくとも24fpsを記録できるようです(仕様には60fpsにする必要があると言われていますが)。これにより、vlc -vvv --color v4l2:///dev/video0 --run-time 1 vlc://quit -I dummy -V dummy -A dummy
次のような結果が得られます。
[00007f64f4001120] v4l2 demux debug: frame size 1920x1080
[00007f64f4001120] v4l2 demux debug: discrete frame interval: 1/24
video0
ただし、ffmpegを使用してv4l2ループバックデバイスにコピーしようとすると、次のようになります。
ffmpeg -f v4l2 -r 24 -s 1280x720 -i /dev/video0 -codec copy -f v4l2 /dev/video4
10fpsだけが表示され、メッセージは次のようになります。
[video4linux2,v4l2 @ 0x55a30e698c00] The driver changed the time per frame from 1/24 to 1/10
なぜこれが起こり、より高いフレームレートを得るには?
答え1
カメラのRAW形式を使用しています。圧縮コーデックを試してください。
ffmpeg -vcodec mjpeg -r 30 -s 1920x1080 -f v4l2 ...