気の向くままに辿るIT/ICT
webzoit.netウェブサイトホームページ
PC

いろいろなOSでUSBカメラを使う

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
周辺機器を使う

いろいろなOSでUSBカメラを使う

いろいろなOSでUSBカメラを使う

2017/02/08

 USBカメラとは、ウェブカメラ、ウェブカム、ネットワークカメラ、PCカメラなどとも呼ばれるPC周辺機器でUSBポートに挿して使える外付けのカメラのことです。

 USBカメラも他のUSB対応機器同様、基本、WindowsやMac OS X/macOSをサポートしても*BSD/PC-UNIX/Linuxのサポートを大々的に謳うものは限られますが、それでも絶対使えるとまでは言えないまでも目安としてUVC/USB Video Classに対応しているか否かというのはポイントであり、少なくともLinuxには既にUVC対応ドライバがあり、どうやらNetBSDもこれに対応している模様です。

 尚、対応OSとして謳われるOSには、当該デバイスドライバが存在し、そうでなくても対応ドライバさえ組み込まれていれば、USBポートに挿すだけで少なくともOSには認識され、普通は当該OS上のソフトウェアでも利用可能、追加で便利なユーティリティをインストールできるものもありますが、wineを使うなどの可能性もなくもないものの、これをインストール・利用できるのは、基本的に対応OSのみとなります。

 ただ、対応OSにおいて追加インストールによって得ることができるであろうユーティリティの内、カメラのハードウェア的な制約を超えてソフトウェア的に大幅に画素数をアップできる機能以外、たとえば、少なくともLinuxなら色調補正はEkigaやCheese、Guvcviewなど、静止画撮影、映像録画ならGuvcview、これに加え連写撮影が必要ならCheeseなど、動体検知ならmotionなどのソフトウェアを使うことで対応できます。

 カメラ機能は、スマホやタブレットでは、標準機能と言えるほどの装備率ですし、ノートをはじめパソコン(用液晶モニタ)内蔵のものもありますが、USBカメラがあれば、仮にPCなどUSBポートのある機器にカメラが内蔵されていなくても外付けカメラとして使うことができます。

 外付けだとカメラの調整角度以前にUSBケーブルでつながっているカメラ自体向きを変えられる為、映像を表示させているモニタを映して幾重にもなる撮影中の映像を見るなど不思議体験?できたり、PC画面を見ながら、カメラを被写体に向けて撮影・録画できるなど内蔵カメラ以上に使い道があったりもします。

 また、これらの内蔵カメラや外付けUSBカメラの利用用途は、カメラとしてだけでなくビデオカメラとしても機能する為、ビデオ会議、ビデオ通話などに使うこともできます。

 こうした背景には、インターネットとブロードバンド化に伴うネットワークの高速化やLANと転送速度の高速化などのネットワーク、USB転送速度の高速化、複数端末間での相互通信P2P/Peer to Peer、TCP/IP、TCP/UDP、SIP/Session Initiation Protocol、HTTP、WebRTC。。。、当初テキストベースだったチャット、VoIP実現に伴うIP電話、音声チャットや映像配信の実現、XMMP/Extensible Messaging and Presence Protocol(旧Jabber)。。。といったあらゆる技術の融合があります。

 自身は、昔、InfoseekチャットやMSNメッセンジャー・Yahoo!メッセンジャーを好んで使っていたことがあり、Skype同士の無料通話含め、Skypeの登場も興味深かったものの、Infoseekチャットサービスが終わった時点でチャットもやめ、Skypeも一度も使うことなく今に至っています。

IoTとしてのUSBカメラ

 そんな自身が、なぜ、今更USBカメラなのか。。。それは、先日来ラズパイをサーバにしていることもあり、IoTへの関心から定点カメラ、見守りカメラ、防犯・監視カメラ、Live配信といった用途に目が向き、ついでにLAN内ビデオ通話でも試してみるかと思ったこと、10年前に買ったVistaマシンに付属していて一度も使うことのなかったWindows Media Center用リモコン&赤外線レシーバを試してみることにしたのですが、当初、このレシーバをUSBカメラだと勘違いしていたことに端を発しています。

 ビデオ通話は、ついでに行なう検証という意味合いが強く、ラズパイ+USBカメラによるIoT目当てなので検証後は、手持ちのサーバ用とは別に追加でラズパイを購入し、利用しようと思っています。

ソフトウェアには何を使うか

 10年経過した2台、18年ほど経った1台の計3台のPCとssh接続専用でモニタもないラズパイという手持ちの機器には内蔵カメラはないため、購入することになりますが、先のリモコンの検証が思いの外あっさり終わってしまったこともあり、その前にどんなソフトウェアがあるのか、OSSやフリーソフトウェアはどの程度存在するのかといったところから調べてみることにしました。

 Windowsは、Vistaを最後にNetBSDをメイン、Fedora、Debianをサブ、NetBSDは3台とも、Debianは2台に、ラズパイはRaspbian、ラズパイ以外はデスクトップ用途という中、基本、デスクトップ環境は一通り入れてしまう癖があり、これらの中には標準採用される各種ツールもあり、先進性優先のFedoraにおいては最初からチャットツールらしきものが複数入っていたという、うすらぼんやりとした記憶がありました。

 ググったり、各OSのリポジトリを眺めたりしているとクラウドサービスの他、HTML5化が進む今、ブラウザで利用できるFirefox Hello(Firefox 34で登場、Firefox 49でサービス終了)、Talky、Cisco Spark、Appear.in、Firefox/Chrome+Skype、jscommunicator他各種HTML5とWebRTC実装、また、Googleハングアウト、Jitsi、QuteCom(旧OpenWengo/WengoPhone)、Pidgin(旧Gaim<=旧GTK+ AOL Instant Messenger)、Blink、Ekiga(旧GnomeMeeting)、GNOME Empathy(フレームワークはTelepathy)、KDE Telepathy、KDE KPhone、Linphone、GNU Ring。。。などがあるようです。

 が、この内、QuteComについては、ドメインqutecom.orgが売りに出されている?模様、また、名称が変わったのか、消滅したのか。。。?Debianで試してみたところ、リポジトリにはあり、インストールも簡単、あっさり起動もしますが、なぜかログオンすらできませんでした。(もしかしてサーバがインターネット上にあったはずなのか!?)

 できるかどうかに関心があるだけで、今のところ、その後、継続して使おうという気もなく、とりあえず、LAN内で確認できればよい自身としては、オンライン登録したり、アカウントを取ったりするのも億劫、これが不要なものを求め、リポジトリを探しつつ、ググってみることに。

 そうなるとGNOMEプロジェクトによるEkiga(エキガじゃなくてイカイガと発音する模様)が簡単そう、オンライン登録しなくても使えるらしき情報もあり好都合です。(当のGNOMEでは、標準のRTCソフトウェアはEkigaからEmpathyに移行している模様ですが。)

 Fedora 24を確認してみると近年、音声・動画も対応するようになった模様のPidgin含め、いくつかそれらしいものを起動してみましたが、やはり、EkigaだろうということでFedoraのリポジトリを探すとEkiga自体はあるものの、インストールしようとしたら依存関係にあるパッケージがあるリポジトリが見つからない。。。リポジトリを追加してみても同期がとれないようでFedoraでは見送ることに。

 NetBSD 7.0.2を確認するとPhone、WeeChat、Pidgin(X-ChatやHexchat、ICB、I2CBもそうっぽい。)はバイナリが、Ekigaはpkgsrcからmakeすればある。。。と思ったら、見落としていたのかEkigaのバイナリもあった。。。ので試してみると相当するコーデックのパッケージは入っている気がするものの、Ekiga用が別途あるのか?選択肢には出てこず、音声コーデックは2種類、動画コーデックに至ってはゼロ。。。なのでとりあえず事前検証は見送ることに(しましたが、カメラ購入後、試してみると少なくとも買ったUSBカメラの内1台は、NetBSD+Ekiga/Cheeseでも使えました)。

 それならば、Debian 8.7 Jessieでと、Ekigaを2台のPCにインストールしてやってみたら、LAN内通信を選択でき、あっさり、相互のSIPアカウント(sip:Ekiga用に作成の任意のホスト名)も認識され、テキストによるチャットができることは確認できました。

USBカメラを買ってみた

 音声・映像出力については、当然、USBカメラ購入後、ということでソフトウェアを先に決めてしまいましたが、UVC対応で実際にLinuxで使えたという情報があって、概ね1つ2000円未満、マイク内蔵タイプ1つとマイク&イヤホン(ヘッドホン)のヘッドセット付き1つ、2つは別物、できれば別メーカーという条件でUSBカメラを2点をAmazonでチョイス。

 また、実際のところ検証含め、USBカメラの本来の目的は、IoTなのでサーバ用に続き、自身2台(個)めとなるIoT用ラズパイも購入予定ですが、サーバ用にはElements14製を買ったので今回はRCコンポーネンツ製を買ってみようかと、Amazonだとあったり、なかったりするのでRC代理店で買う予定。

 2017/02/06夜に発注したので02/08到着かと思いきや、02/07の夜、Amazonから届きました(クロネコヤマトが届けてくれました)。

LOGICOOL ウェブカム HD画質 120万画素 C270

 1つはAmazonでUSBカメラ1番人気のLogicool C270。

 C270に限らず、事前情報の中には、マイク内蔵でヘッドセットがない場合、ビデオ通話に使うとなると、そのままでは、マイクに相手の声も入って相手側が反響するという説もありましたが、仮にそうなら手持ちのヘッドホンをPCのジャックに挿せばよいかなと思っていたら、届いて確認してみると時の経過と性能向上によるのか、心配無用でした。

 尤も検証以後、ビデオ通話に使用するつもりはありませんが、仮に使うとすればもう1つの方で、ちょっと大き過ぎる気もするものの、こちらはIoT専用かなと思っていたら、ラッキーなことに想像していたものより遥かに小さくて助かりました。

 C270は、カメラ部分のヘッドを上下方向にのみ調整可能、あとは無断階調整可能で180度弱ある折りたたみ式の台座兼フック部の状態によっても角度が変わります。(平置きも可)

 認識されるとレンズ脇のグリーン(イエローグリーン?)のLEDが、やんわり優しく点灯します。

 画質・音質共に申し分なく、近くにある2台のPC間で確認してみましたが、マイク内蔵でヘッドセットのないC270でも反響・共鳴したりするようなことはありませんでした(考えてみれば1つのカメラの前に集まって複数人でワイワイ話すなんて状況もあるわけだから、ヘッドセットが必須なわけはないですよね)。

エレコム WEBカメラ 200万画素 マイク内蔵 MAC対応 コンパクトタイプ ホワイト UCAM-C0220FEWH

 もう1つはELECOM UCAM-C0220F/UCAM-C0220FE(白なのでUCAM-C0220FEWH)、最近、PC周りには白を好んでいること、同価格帯で200万画素ってどれくらい違いが出るのか、出ないのかに興味があったこと、更に1つめにはないイヤホン&マイク付き(の場合、内蔵マイクがないものもある中)、かつ内蔵マイクもあることから選択。

 商品画像を拡大しただけでもグ○コのオマケか?と思うほど質感がチープも1000円ちょっとという価格からして不思議でもなく、更に100均でも買えそうな感じとはいえヘッドセット付けて、200万画素で・・・となると筐体にまでコストかけていられないというのも頷ける。。。というか安すぎてかえって心配もありましたが、それをおして購入。

 しかし、実際にモノを目の前にしてみると、相変わらず、おもちゃ感・おまけ感はありつつも、チープという言葉は相応しくなく、キュートといった感じです。

 UCAM-C0220FEも平置きも可能で約180度開閉する台座兼フック付き、カメラ部分とフック部分の接続はボールジョイントになっていて水平方向に360度、上・下・斜め方向には、どのくらいだろう。。。50~60度くらい?は調整でき、台座兼フック部の傾斜によって実際には、更なる調整も可能となっています(コストを抑えつつボールジョイントをうまく使っている点に感心)。

 認識されるとレンズ横の[2.0 MEGA PIXELS]という文字の上のあたりでブルーのLEDが、閃光を放つかのようにキラリと格好良く点灯します。

 こちらも画質・音質共に申し分ありません。

 付属のマイク&イヤフォン(ヘッドセット?)も、その機能は十分に満たしており、音質についても過不足なし。

共通の感想

 それにしても開けてみるとどっちもちっちゃくてカワイイ、UCAM-C0220FEは想定内のサイズですが、Logicool C270は大きそうで邪魔そう。。。と思っていたらラッキーな誤算でUCAMよりは若干大きめも相当小さい。。。まぁこんなものなのでしょうけどね。

 台座・フック部分は、この手のカメラは、どれも似た感じのようで何れも無段階調整式とでも言うべきか、へなへなではなく、若干ながら程よい抵抗があって、どの位置でも状態を保持できる折りたたみ式なので平面上に置いたり、モニタに引っ掛けたりできますが、置き場所や取り付け場所もいろいろなわけでガッツリ固定するようなものではありません。

 ヘッドセット(イヤホン&マイク)は、カメラに挿すところがあるのかと思ったら、PCに挿すんですね。。。それならどのカメラを買っても、それがマイク内蔵であっても別途ヘッドセットがあれば使えるってことですよね、全てがそうなのかわかりませんが、勉強になりました。

 映像については、CheeseやGuvcviewだとUCAM-C0220FEもC270も被写体が動いても滑らかですが、なぜか、Ekigaだと動いた時、UCAM-C0220FEは、コマ送り的に結構カクカクした感じになるのに対し、C270は、スムース。。。ソフトウェアによってなんでこんなに違うのか?

 一方、画質は、(後で気づけばGuvcviewなどで認識可能ならカメラごとの設定可能な値やデフォルトの設定値などもわかりますが、)輝度・深度などの違いか、画素数の違いからか、C270も十分といえば十分も、届いたままで調整なしという前提で比較してみるとC270よりもUCAM-C0220FEの方が自然な色調であり、接写すればするほど200万画素のUCAM-C0220FEの方が、くっきり鮮明に映ります。(赤ちゃん〜20代前半とか、よほど気を遣ってお手入れしているとかじゃない限り、顔を接写するとわかりやすい。)

 前述のように何れのカメラも対応OSには追加で便利なツールをインストールできるようですが、*BSD/Linuxでは、これらの全てとは言わないまでも色調調整はEkigaやCheese、Guvcviewなどでもできますし、静止画撮影・映像録画ならGuvcview、プラス連写撮影ならCheeseなどでも、動体検知についてはmotionなどでもできます。

 音質は、内蔵マイクについては、甲乙はつけがたいというか、どちらも遜色なく、満足というか、こんなものでしょう。

 尤も画質は、たいていソフトウェアで調整が可能でしょうし、音質は、マイクはともかく、スピーカー出力は、そもそもPC依存であり、更にサウンドサーバやアナログ・デジタルなどの選択により異なるでしょう。

 ちなみに人気度やレビュー含め、購入前の印象では、C270の方が圧倒的によさ気に見え、というよりUCAM-C0220FEの評価はさほどでもありませんでしたが、実際使ってみると、どちらも一定の満足を得ることができ、この2点を敢えて比較するなら、事前情報に反して、むしろUCAMの方が、コスパも高く、良いかなと思いますし、これはカメラではなく、ディストロ側の対応次第とは言え、Linuxばかりか、NetBSDでもすんなり使えたのも嬉しいところ(UCAM-C0220Fシリーズなら対応するでしょうからなんですが、UCAM-C0220FEについては3色ある内、2色は生産終了、白のみメーカー在庫限りという点がちょっと残念?)。

意外にもハイスペックマシンを要求されることに驚く

 Debian Jessieにおいては、後から試したデュアルコアCPU 1.80GHz/RAM2GBのデスクトップパソコンだと何れも何の問題もありませんでしたが、最初に試したシングルコアCPU 1.60GHz/RAM2GBのノートPCだと、何れも最初はdmesg、lsusb、Ekiga設定アシスタント、Ekiga設定パネル上などでもUCAM-C0220FEは、[Product: UCAM-C0220F,Manufacturer: Etron Technology, Inc.]/[056e:7016 Elecom Co., Ltd]として、C270は、[UVC Camera (046d:0825)]/[046d:0825 Logitech, Inc. Webcam C270]として認識され、1度は映像も出力されたにも関わらず、UCAM-C0220FEは認識すらされなくなり、C270は認識はされますが、映像が出力されなくなりました。

 一方、NetBSD 7.0.2では、デュアルコアCPUマシンでもシングルコアCPUマシンでもUCAM-C0220FEは[Etron Technology, Inc. UCAM-C0220F]として、C270は[Logitech product 0x0825]としてdmesg、usbdevs、Ekiga設定ウィザード、Ekiga設定パネル上などで認識され、UCAMもC270もデバイスに製品名+PTLIB/V4L2を選ぶとクラッシュ、製品名+GStreamerを選べばUCAMはEkigaで起動・映像表示されますが、C270は、相変わらず映像が表示されません。

 そこで、あれ?と思って、遅まきながら、マシンに要求されるスペックを調べてみると

と思いの外、高いマシンスペックを要求されることがわかりました。

 手持ちだとデュアルコアCPUマシンの他、Raspberry Pi 2 Model B(CPU:ARM 4(クアッド)コア/RAM:1GB)でも使えそうですが、USBカメラを甘くみていました。。。

 というわけで試しにサーバとして使っている専用ディスプレイを持たないラズパイにEkigaを入れてVNC経由で使ってみると映像表示もテキストチャットも通話もでき、映像もローカル映像は被写体に動きがあっても滑らかに表示されますが、VNCには負荷が大きすぎるのでしょう、リモート映像に関しては静止画状態で追従しようとした結果、しばらくすると真っ白(白抜け?)になってしまいますが、このラズパイに専用モニタがあればリモート映像も滑らかに表示されることでしょう。

 それにしてもシングルコアCPU 1.60GHz/RAM2GB/OS:Debian Jessieマシンにおいては、C270は継続して動作してもよさそうなものですが、1度は映ったのに、その後、なぜ映らなくなったのかは謎。

 ただし、仮にカメラが使えなくても当然、テキストチャットなどはできます。

[2017/02/15]
raspbian:~$ ekiga
...
libv4l2: error setting pixformat: Device or resource busy
...
[Ctrl]+[c]
raspbian:~$

 何かエラーが出るかもしれないし、ekigaを端末で実行してみようとやってみたら、こんなエラーが。(NetBSDでは習慣付いていたものの、Linuxではその習慣がなかった・・・)

raspbian:~$ sudo ekiga
...

 他で使われてるってことか。。。ならば、ユーザーじゃなくてrootでやってみたら。。。

 いけた!シングルコアマシン+Debian+C270で映像が出た。

 もしかして。。。いけた!当初から映像が出なかったUCAM-C0220FEでもroot権限で実行したらシングルコアマシン+Debianで映像が出た。。。

 motionを入れる前からの症状だから、motion.serviceを止めても意味はない(やってみたが、意味なかった)。。。udevとかdbusとか、めぼしそうなもののstatusを見るとどれもさっきログインした時点で開始されactiveになっている。。。/tmpでなにか干渉しているのか?。。。

 どこの何をどうしたらユーザーでいけるんだ。。。ん?/tmp/dbus-xxx...が関係ある?、dbus-launch。。。?

 まぁ、当初の通り、マシンに依存せず、C270が使えること、更には当初、Debian+シングルコアマシンでは使えないと思われたUCAM-C0220FEも使えることはわかったから、とりあえず、よかった。。。

Cheeseで試してみると

 ん。。。Debian+Cheese 3.14.1-2だとシングルコアマシンでも何れのカメラも認識、映像も表示され、画像、映像、連写の撮影もできる。。。

 一方、シングルコアマシン+NetBSD 7.0.2+Cheese-2.26.3nb48だと何れも認識はされるものの、クラッシュ、デュアルコアマシンだとNetBSDでも共に認識され、UCAM-C0220FEは、写真・動画を撮影でき、C270も電源が入ってランプが点灯するも解像度を選択できないのが原因か?ちゃんと認識されていないから解像度が表示されないのか?すぐに電源ランプも消え、サンプル画像になってしまいます。

GuvicviewやMPlayerで試してみると

 シングルコアマシン+Debian+Guvcview 2.0.1+debian-1でも、MPlayer2 2.0-728-g2c378c7-4+b1でも何れのカメラも認識、映像も表示され、UCAM-C0220FEもC270も動きは滑らか。。。

fswebcamで試してみると

 シングルコアマシン+Debian+fswebcam 20140113でも何れのカメラも認識、静止画の撮影もできる。。。

motionで試してみると

 シングルコアマシン+Debian+motion 3.2.12+git20140228でも何れのカメラも認識、静止画の撮影も動体検知した際の映像録画もできる。。。

debian:~$ mkdir ~/.motion
debian:~$ sudo cp /etc/motion.conf ~/.motion
debian:~$ sudo chown user:motion ~/.motion/motion.conf
debian:~$ motion -s
debian:~$

 ちなみにman motionしてみるとコマンドでオプション指定しない場合、~/.motion/、/etc/motion/を探索するとあるのでユーザー設定として~/.motion/motion.confに書き、中身を読むとhttp://localhost:8081(デフォルトは8081ポート)などとするとLive映像を観ることができるとあり、FirefoxやChromiumでやってみると指定サイズの領域内に原色系カラーではあるものの、まるでネガのような映像が。。。

debian:~$ motion -n
debian:~$

 と思ったらセットアップモード(motion -s)で起動したからだった模様。。。デーモンモード(motion -n)で実行したら、Firefox、Chromium共に他に何もしなくてもhttp://localhost:8081上でも普通に視認できるフルカラー?のLive映像を観ることができるようになりました。

mpvやMPlayerで試してみると

 今度は、NetBSDでシングルコアマシン+mpv 3.2.2、MPlayer 1.3.0で試してみるとUCAM-C0220FEもC270も認識、映像を表示でき、被写体が動いても若干遅延があるものの、スムース。

Jitsiで試してみると

 RTC/Real Time Communication、ビデオ会議できるソフトウェアで確認したいよね。。。というわけでWebRTC版(Jitsi VideoBridgeやJitsi Meet)もありますが、今回はデスクトップ版のJitsiをデュアルコアマシン、シングルコアのDebian Jessieに入れてやってみたら、UCAM-C0220FEでもC270でもビデオ通話できました。

結果

 他のビデオ再生ソフトウェアもさることながら、まだ改良の余地は多々ありそうも、ほぼ完成された感のあるJitsiで何れのカメラもビデオ通話できたことで、今回購入のカメラが、マシンによって使えたり、使えなかったりするのは、手持ちのマシンのスペックの問題ではなく、Ekigaに起因するものだった模様。

 既にWindows/Mac OS X/macOS/Linuxに対応のJitsi、*BSD対応も期待したいところ(pkgsrc wipにはあるも今のところインストールはできない模様)。

2017/02/13

 Debianで試したJitsi、Fedoraでも検証してみました。

ウェブ造ホーム前へ次へ