USB HDMIキャプチャFEBON238HをRaspberry Pi 3に接続するとどう見えるのか?

FEBON238HはUSB接続のHDMIキャプチャです。USB Video Classに対応しているためHDMI端子のあるカメラをUSBカメラの様に扱う事ができます。
Raspberry Pi 3につないで動かせるのか確かめてみます。

いままでRaspberry Pi 3にUSBカメラをつないでライブ配信の実験を行っていました。
ラズベリーパイでFacebookにライブ配信をする方法
USBカメラはテレビ会議やチャット用に作られた物がほとんどです。つまり近くの物をそれなりに写す事はできますが、屋外で使うといろいろ不満が残ります。

USBカメラでは写りが悪い

やはりカメラは良い物を使いたくなります。どうしたら良いでしょうか?

最初はIPカメラで良いのは無いかと探しました。ネットでつながるカメラです。IPカメラは防犯カメラとして良く使われます。そのため、設置場所は固定のものばかりでバッテリーで動かすこともできません。

デジタルカメラの初期のころは、パソコンにつなぐとUSBカメラとして動くものもあったりしました。ですが最近のデジカメでこのようなカメラはありません。まったく残念なことです。

デジカメにWiFi搭載が当たり前になったのでIPカメラの様に使えるものはないかと探しました。これまた使えそうなのが無くなっています。
初期のGoProではhttpサーバー機能があり、あるURLで接続するとライブビューが見えたりしたようですが、最新の機種では面倒な手続きが必要になってしまったようです。
ソニーのデジカメではライブビューを取得できるAPIライブラリがあるようですが、もっと単純にライブビューが使えればよかったのになぁ、と思います。

追加の機器を使わずにカメラを接続する方法はあきらめました。

HDMIキャプチャを使う

デジタルカメラやビデオカメラで最も汎用的な映像出力端子はHDMIです。HDMIの映像をキャプチャして取り込むことができれば最も自由にカメラを選ぶことができます。
特に家庭用ビデオカメラは運動会に特化しているため、高倍率ズームがあり、とても高性能な手振れ補正が搭載されています。最近では望遠ズームだけではなく広角側も十分広く撮影できます。しかも価格が安い。

という事でHDMIキャプチャを調べました。
ビデオカメラでライブ配信をしたいのでHDMIキャプチャ機器を調べた

そして購入したのがFEBON FEBON238Hというものです。

価格が比較的安く、金属の箱に入っていて長時間使用しても熱で動作不良が起こる事が無さそうです。

Raspberry Pi 3にFEBON FEBON238Hをつなぐ

FEBON238HはHDMIの映像をUSBカメラの形式へ変換してくれる装置です。USB Video ClassとUSB Audio ClassというUSBで映像と音声を伝送する標準的な形式に変換するため、ほとんどのコンピュータにつなぐだけで動かせます。

とはいえ、本当にRaspberry Pi 3で使えるのか?確かな情報を見つける事はできませんでした。
実際につないだ時の最も重要な情報は、Video4Linux2でどう見えるのか? ということです。

実際につないで確認をしてみました。

本当にUSB Audio Classなの?

audioを認識するか確認してみます。
pi@raspberrypi:~ $ arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 1: HDMIUSB20 [HDMI-USB2.0], デバイス 0: USB Audio [USB Audio]
  サブデバイス: 1/1
  サブデバイス #0: subdevice #0
ちゃんとUSB Audioとして認識しています。

本当にUSB Video Classなの?

videoはどうでしょうか?
pi@raspberrypi:~ $ v4l2-ctl --list-device
HDMI-USB2.0 (usb-3f980000.usb-1.5):
 /dev/video0
ちゃんとUSB Videoとして /dev/video0に割り当てられています。

UVCで使えるフォーマットは?

最も重要な情報、どんな映像フォーマットを使えるのでしょうか?
pi@raspberrypi:~ $ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
 Index       : 0
 Type        : Video Capture
 Pixel Format: 'MJPG' (compressed)
 Name        : Motion-JPEG
  Size: Discrete 1280x720
   Interval: Discrete 0.033s (30.000 fps)
  Size: Discrete 1920x1080
   Interval: Discrete 0.033s (30.000 fps)
  Size: Discrete 640x480
   Interval: Discrete 0.033s (30.000 fps)
  Size: Discrete 176x144
   Interval: Discrete 0.033s (30.000 fps)
  Size: Discrete 320x240
   Interval: Discrete 0.033s (30.000 fps)
  Size: Discrete 352x288
   Interval: Discrete 0.033s (30.000 fps)
これが知りたかったのです。
どうやら無圧縮の映像転送はできず、Motion-JPEGに圧縮されるフォーマットだけのようです。
解像度は
1920x1080
1280x720
640x480
320x240
と主に使うであろうものに対応しています。フレームレートはいずれも30fpsになります。

ffmpegでも同じ事をやってみます。
pi@raspberrypi:~ $ ffmpeg -f video4linux2 -list_formats all -i /dev/video0
ffmpeg version n3.3 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 4.9.2 (Raspbian 4.9.2-10)
 .....
[video4linux2,v4l2 @ 0x1b50250] Compressed:       mjpeg :          Motion-JPEG : 1280x720 1920x1080 640x480 176x144 320x240 352x288
ffmepgで問題なく認識しています。

まとめ

FEBON238HはRaspberry Pi 3に接続して使う事ができます。
USB2.0接続でもフルHD解像度に対応しています。USB2.0の帯域幅でもMJPGに圧縮すればフルHDを30fpsで転送できる事になります。
ですが、Raspberry Pi 3のUSBでフルHDは厳しいと思います。キャプチャだけでUSBの帯域を使い切ってしまうため、USB 3G/4Gモデムを使ってライブ配信する帯域が無さそうです。
USBとは異なる経路で送る必要がありそうです。

実際にYouTubeで配信を行った例はこちら

FEBON238Hを使えばHDMI出力のある好きなカメラをRaspberry Pi 3に接続できます。USB Video Classになるため普通のUSBカメラをつないでいるのと同じように見えます。そのため簡単に映像を取得する事ができるでしょう。

コメント

最近のコメント

Threaded Recent Comments will be here.