千円で有名になったHDMIキャプチャカードだが、複数の販売元では送料込みで700円を割り込んでいる。公式画像では「Shenzhen Yonghui Fashion Co., Ltd」の配送になるが、今回購入したのは「XBOW」から。「今すぐ買う」のボタンの下から選択できる。最初の頃に言われていた音声がおかしい問題は解決されて1280×720の60fpsのMJPGで取り込めて、手軽なHDMI出力の画面表示に使える。

基本コマンド
ffmpegではdshowで扱える。以下のコマンドでデバイス名を取得する。映像と音声とそれぞれの代替名が表示される。
ffmpeg -list_devices true -f dshow -i dummy
"USB Video" Alternative name "@device_pnp_\\?\usb#vid_534d&pid_2109&mi_00#6&16c1d60c&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" "デジタル オーディオ インターフェイス (USB Digital Audio)" Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{265CAD41-EAB9-411E-B22A-0DBBA727C917}"
コマンド例。-vcodec mjpeg読み込みなのでJPG特有のノイズがある。
ffmpeg -rtbufsize 10MB -f dshow -video_size 1280x720 -framerate 60 -vcodec mjpeg -i video="USB Video":audio="デジタル オーディオ インターフェイス (USB Digital Audio)" -pix_fmt yuv420p output
ffplay -rtbufsize 10MB -f dshow -video_size 1280x720 -framerate 60 -vcodec mjpeg -i video="USB Video":audio="デジタル オーディオ インターフェイス (USB Digital Audio)"
無圧縮データを扱うなら-pixel_format yuyv422を指定する。解像度毎に扱えるフレームレート数の上限が異なる。
fffplay -rtbufsize 10MB -f dshow -video_size 1920x1080 -framerate 5 -pixel_format yuyv422 -i video="USB Video":audio="デジタル オーディオ インターフェイス (USB Digital Audio)"
fffplay -rtbufsize 10MB -f dshow -video_size 1280x720 -framerate 10 -pixel_format yuyv422 -i video="USB Video":audio="デジタル オーディオ インターフェイス (USB Digital Audio)"
ffplay -rtbufsize 10MB -f dshow -video_size 720x480 -framerate 30 -pixel_format yuyv422 -i video="USB Video":audio="デジタル オーディオ インターフェイス (USB Digital Audio)"
気になった点はffmpegやVLCで読み込むときは映像と音声はズレないが映像が送れて流れるので操作が必要な映像を見るには向かない。MPC-HCで読み込むときは音声が遅延しているが映像の遅延はない。オプションを開いて再生->キャプチャより、映像に「USB Video」、音声に「デジタル オーディオ インターフェイス (USB Digital Audio)」、地域に「81 – Japan – NTSC M J」をプルダウンから選び適用してプレイヤー画面左上の「デバイスを開く」。

OBSでは問題が無い。こちらは「オーディオの詳細プロバティ」から同期オフセットで遅らせることもできる。

扱える解像度とフレームレートなどの情報
個別のデバイスで扱える内容を取得する。無圧縮のyuyv422はフレームレート上限が低くなる。mjpegで解像度1280×720より大きい値でもfps=60.0002になっているが扱えない。
ffmpeg -list_options true -f dshow -i video="USB Video"
vcodec=mjpeg min s=1920x1080 fps=10 max s=1920x1080 fps=60.0002 vcodec=mjpeg min s=1600x1200 fps=10 max s=1600x1200 fps=60.0002 vcodec=mjpeg min s=1360x768 fps=10 max s=1360x768 fps=60.0002 vcodec=mjpeg min s=1280x1024 fps=10 max s=1280x1024 fps=60.0002 vcodec=mjpeg min s=1280x960 fps=10 max s=1280x960 fps=60.0002 vcodec=mjpeg min s=1280x720 fps=10 max s=1280x720 fps=60.0002 vcodec=mjpeg min s=1024x768 fps=10 max s=1024x768 fps=60.0002 vcodec=mjpeg min s=800x600 fps=10 max s=800x600 fps=60.0002 vcodec=mjpeg min s=720x576 fps=10 max s=720x576 fps=60.0002 vcodec=mjpeg min s=720x480 fps=10 max s=720x480 fps=60.0002 vcodec=mjpeg min s=640x480 fps=10 max s=640x480 fps=60.0002 pixel_format=yuyv422 min s=1920x1080 fps=5 max s=1920x1080 fps=5 pixel_format=yuyv422 min s=1600x1200 fps=5 max s=1600x1200 fps=5 pixel_format=yuyv422 min s=1360x768 fps=8 max s=1360x768 fps=8 pixel_format=yuyv422 min s=1280x1024 fps=8 max s=1280x1024 fps=8 pixel_format=yuyv422 min s=1280x960 fps=8 max s=1280x960 fps=8 pixel_format=yuyv422 min s=1280x720 fps=10 max s=1280x720 fps=10 pixel_format=yuyv422 min s=1024x768 fps=10 max s=1024x768 fps=10 pixel_format=yuyv422 min s=800x600 fps=5 max s=800x600 fps=20 pixel_format=yuyv422 min s=720x576 fps=5 max s=720x576 fps=25 pixel_format=yuyv422 min s=720x480 fps=5 max s=720x480 fps=30 pixel_format=yuyv422 min s=640x480 fps=5 max s=640x480 fps=30
ffmpeg -list_options true -f dshow -i audio="デジタル オーディオ インターフェイス (USB Digital Audio)"
min ch=1 bits=8 rate= 11025 max ch=2 bits=16 rate= 44100
オプション
dshowでよく使うオプション。
公式ドキュメント:FFmpeg Filters Documentation : dshow
ffmpeg -h demuxer=dshow
- -video_size[image_size]
解像度の指定 - -pixel_format[pix_fmt]
ピクセルフォーマットの指定 - -framerate[string]
フレームレートの指定 - -sample_rate[int]
サンプリング周波数の指定 - -channels[int]
音声チャンネル数の指定