ffmpegで格安UVCデバイスから画面を録画しつつプレビューも表示する

ゲーム機やPCの画面を動画としてキャプチャするのに簡単 HDMIで映像と音声をキャプチャするUSBデバイスが格安で売られている。USB2.0のものはフレームレートや解像度が低いので USB3.0以上のものを選ぶべき。 このキャプチャデバイスは大抵 UVCという規格に沿ったもので、OSにドライバをインストールしたりすることなくそのまま利用できる。 このデバイスを差し込むと、映像キャプチャ用のデバイスと音声キャプチャ用のデバイスが別々に認識される。動画ファイルは映像と音声が一緒になっているのが一般的だし便利なので、別撮りしたり副音声を入れたりなどの特別なことをするのでない限り一緒のファイルにまとめてしまうのが簡単だ。 と ``` ffmpeg -f v4l2 -list_formats all -i /dev/video0 arecord -l ``` ``` [video4linux2,v4l2 @ 0x55e9b2b2cfc0] Compressed: mjpeg : Motion-JPEG : 1920x1080 1600x1200 1360x768 1280x1024 1280x960 1280x720 1024x768 800x600 720x576 720x480 640x480 [video4linux2,v4l2 @ 0x55e9b2b2cfc0] Raw : yuyv422 : YUYV 4:2:2 : 1920x1080 1600x1200 1360x768 1280x1024 1280x960 1280x720 1024x768 800x600 720x576 720x480 640x480 ``` ``` カード 0: MS2109 [MS2109], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0 ``` ``` ffmpeg -f v4l2 -video_size 1024x768 -input_format mjpeg -i /dev/video0 -f alsa -i hw:0,0 -vcodec copy -acodec copy -map 0:v -map 1:a -f tee "output.mkv|[f=matroska]pipe:1"|ffplay -i - ```