気の向くままに辿るIT/ICT/IoT
システム開発

NetBSDとUSBカメラでビデオ会議・通話・チャット

ホーム前へ次へ
*BSD/PC-UNIX/Linuxって?

NetBSDとUSBカメラでビデオ会議・通話・チャット

NetBSDとUSBカメラでビデオ会議・通話・チャット

2017/02/08

 ひょんなことから*BSD/UNIX/Linux+フリーソフトウェア+USBカメラでLAN内ビデオ通話ができるのか確認してみようと思うに至ったNetBSD編がこのページ。

 検証に使用したPCは、デュアルコアCPU 1.80GHz/RAM2GBのデスクトップパソコンPavilionシングルコアCPU 1.60GHz/RAM2GBのノートPC dynabook、OSは共にNetBSD 7.0.2、RTC/Real Time CommunicationソフトウェアはGNOMEプロジェクト発のEkiga Softphone(イカイガ ソフトフォン) 3.2.6nb52、USBカメラはLogicool C270とElecom UCAM-C0220F(UCAM-C0220FE?)シリーズの2点。

 とは言え、事前に調べた限り、何れのカメラもNetBSDで使用できるか否かの情報はありませんでしたが、GSoC - USB Video Class (UVC) webcam driverという話が実現しているのであれば、何れもUVC対応カメラなので期待が持てそう。

NetBSD/EkigaでLogicool C270とElecom UCAM-C0220FEWHを検証

netbsd:~$ sudo pkgin up
...
netbsd:~$ sudo pkgin fug
...
netbsd:~$ sudo pkgin in ekiga
...
netbsd:~$

 まずは、Ekigaをインストール。

 NetBSDにEkigaのバイナリがあるとは、ちょっと意外でした。

netbsd:~$ usbdevs
...
addr 4: UCAM-C0220F, Etron Technology, Inc.
addr 3: product 0x0825, Logitech
...
netbsd:~$ dmesg | tail
...
video0 at uvideo0: Logitech product 0x0825, rev 2.00/0.12, addr 3
...
video1 at uvideo1: Etron Technology, Inc. UCAM-C0220F, rev 2.00/0.02, addr 4
...
netbsd:~$

 やはり、NetBSDでも標準でUVC対応しているのか、UCAM-C0220FEもC270もUSBポートに挿しただけでdmesg、usbdevs共に、また、Ekigaを起動、何れのカメラもデバイス設定欄の選択肢にも表示されました。

 UCAM-0220FEは、[...UCAM-C02(GStreamer/V4L2)](実際はスラッシュ以降見えないが、たぶんV4L2?)を選択するだけで他に何も設定しなくても映像も出力・表示された一方、C270も[Logitech product 0x0825, rev 2.(GStreamer/V4L2)]を選択することはできますが、リアルタイム映像は表示されません。([映像のテスト(GStreamer/映像のテスト)]、[Goom(GStreamer/Crazy)]、[Moving Logo]は表示され、映像テストのローカル映像部は、いわゆる砂嵐。)

 ただ、何れのカメラも[...(PTLIB/V4L2)]を選択すると映像表示以前にクラッシュします。(ptlib-2.10.7nb10、libv4l-0.4.3nb3、gst-plugins0.10-v4l2-0.10、gst-plugins1-v4l2-1.10.0はインストール済みというか入っていた)

netbsd:~$ ekiga
...
(ekiga:3779): GStreamer-WARNING **: Failed to load plugin '/usr/pkg/lib/gstreamer-0.10/libgstpulse.so': Shared object "libpulsecommon-9.0.so" not found
...

 ちなみに、とあるPCでは、端末から起動させると、こんなエラーが出てUCAM-C0220FEでも選択するとクラッシュしました。

netbsd$ sudo find / -name "libpulsecommon*"
...
/usr/pkg/lib/pulseaudio/libpulsecommon-10.0.so
...
netbsd$ cd /usr/pkg/lib/pulseaudio/
netbsd$ ls
libpulsecommon-10.0.a libpulsecore-10.0.a libpulsedsp.a
libpulsecommon-10.0.la libpulsecore-10.0.la libpulsedsp.la
libpulsecommon-10.0.so libpulsecore-10.0.so libpulsedsp.so
netbsd$ sudo ln -s libpulsecommon-10.0.so ./libpulsecommon-9.0.so
netbsd:~$

 が、確認するとライブラリが新しすぎることに起因していた為、これを元に存在しないと言われるバージョンのファイルとしてシンボリックリンクを張ることでエラーを回避でき、UCAM-C0220FEを利用できるようになりました。

netbsd:~$ sudo pkgin in cheese
...
netbsd:~$

 UCAM-C0220FEについては、NetBSD+Cheeseでも映像表示され、機能することを確認できました。

 ものすごく惜しい気がしますが、なぜ、C270はEkigaやCheeseのデバイスリストに選択肢まであるのに認識されないんだろう。。。(と思ったら後述の通り、UCAM-C0220FEだけでなく、C270もMPlayerやmpvなどソフトウェアによってはNetBSD上でも映像表示できることがわかりました。)

(USBカメラ自体についてや画質や音質については冒頭のリンク先参照。)

mpvやMPlayerだとUCAM-C0220FEもC270も映像表示された

netbsd:~$ sudo pkgin in mpv mplayer
...
netbsd:~$ mpv tv:// --tv-driver=v4l2 --tv-device=/dev/video0 &
...
netbsd:~$ mplayer tv:// -tv driver=v4l2:width=640:height=480:device=/dev/video1 -fps 15 -vf screenshot
...
netbsd:~$

 そこで他にNetBSDで映像確認できるものはないかと探した結果、mpv、MPlayerなどがあり、Arch Wiki ウェブカメラ設定の通り、CLI操作を試すとデュアルコアマシンに限らず、シングルコアマシンでもNetBSD+mpv 3.2.2、MPlayer 1.3.0-4.8.4においては、UCAM-C0220FEもC270も認識、映像も表示されました。

 そうなるとCheeseとEkigaなどソフトウェアの問題っぽいですが、負荷が高いのか?同じシングルコアマシンで何れのカメラもCheese、MPlayer、Guvcview、VLCなどでは映像表示でき、Jitsiではビデオ通話できた一方、やはり、Ekigaが若干微妙だったDebianの結果も考え合わせるとCheeseよりも更にEkigaの方が負荷が高いように思えますが、実際のところ原因は不明。

 MPlayerとmpvは、UCAM、C270共に被写体が動いても滑らかながらも少し映像が遅延気味でずっと眺めていると酔いそうかも。。。

 尚、MPlayerはフォアグラウンドで実行しないとビューワ起動に至りませんでしたが、mpvはフォアグランドでもバックグランドでもOK。

 /dev/video0や/dev/video1などの割り当てられたデバイスについては、dmesgで確認。(Linuxだとdmesgでは確認できず、USBポートに挿した時に動的に生成されるため、ls /dev/video*で確認できる一方、NetBSDではdmesgで確認できる一方、デバイスが固定で用意されている為、ls /dev/video*等ではどれなのか判断できない。)

Ekigaデバイス設定の選択肢が消えた場合の対処方法

 UCAM-0220FE+NetBSD+Ekigaにおいて改めてマシンを起動、UCAMをUSBポートに挿し、Ekigaデバイス設定の選択肢を見ると、いつの間にか、[...UCAM-C02(GStreamer/V4L2)]がなくなっていました。

 気づけば、なんのことはない、Ekigaを先に起動すると表示されなかった[...UCAM-C02(GStreamer/V4L2)]が、予めUSBカメラをUSBポートに挿してからEkigaを起動してみたところ、自動認識され、設定パネルを見ると[...UCAM-C02(GStreamer/V4L2)]になっていました。。。ってこれじゃ一応機能する[デバイスを検出する]ボタンの立場がないが。。。

 ちなみにNetBSDでEkigaをSIPアカウントで使う場合、ネットワーク検出用にavahidaemonの起動(なければ/etc/rc.dへのコピーと/etc/rc.confにavahidaemon=yes行追加)の他、たぶん、ユーザーにavahiグループを追加しておくのがよいかも。

Ekiga 3.2.6nb52は微妙かも

 ただし、Ekiga 3.2.6nb52には、どうも通話音声が一音一音途切れたり、チャットでメッセージ受信への返信はできてもメッセージ送信すると通信できなかったりと、ちょっとしたバグがあるようです。

LINK

[その他]

ホーム前へ次へ