65
Raspberry PiをPCのウェブカメラとして使う方法

Raspberry PiをPCのウェブカメラとして使う

(画像提供:Tom's Hardware)

これを書いている時点ではUSBウェブカメラが不足しており、業界リーダーのロジクールは十分な供給が確保できるまで4~6週間かかると発表しています。しかし、Raspberry Piカメラモジュールをまだお持ちでない場合は、入手してRaspberry PiをPCのウェブカメラとして 使用することは簡単です。

必要なもの

  •  カメラモジュール: Raspberry Piカメラモジュールは、リボンケーブルを使用してPi独自のCSIカメラポートに接続します。価格は10ドル程度ですが、公式のRaspberry PiカメラモジュールV2(約25ドル)など、より高品質なモデルの使用をお勧めします(テストでは安価なモデルを使用したため、低照度でのパフォーマンスは良好ではありませんでした)。これらのモジュールのほとんどには取り付けブラケットが付属していないため、モニターの上など最適な位置に設置するには、工夫が必要です(テープなどを使うなど)。また、ケースを購入する必要があります。 
  •  Raspberry Pi: Raspberry Piカメラモジュールは最近のRaspberry Piであればどれでも使用できますが、Raspberry Pi Zero / Zero Wが最適な選択肢かもしれません。Raspberry Pi 4 Bなどのより高性能なモデルは、より高いフレームレートを問題なく処理できるかもしれませんが、最も重要なのはRaspberry PiとPC間の接続の強度です。Raspberry Pi Zero / Zero WはPCに直接USB接続できますが、他のモデルではイーサネットまたはWi-Fiを使用する必要があります。接続が高速で信頼性が高いほど、遅延や画像のフリーズを最小限に抑えられる可能性が高くなります。  
  •  RaspbianをインストールしたmicroSDカード:言うまでもなく、Raspberry Piの公式OSが必要です。まだインストールしていない場合は、Raspberry Piにヘッドレスインストール を行い、コンピューターから操作する方法についてのガイドをご覧ください。

Raspberry Piカメラモジュールのインストール 

すでに Raspberry Pi カメラ モジュールがインストールされているか、その使用方法を知っている場合は、次のセクションの手順 6 に進んでください。

Raspberry Pi 3と4には、カメラ用と一部のディスプレイ用の2つの異なるシリアルインターフェース(リボンケーブル)ポートがあります。3と4では、CSI(カメラシリアルインターフェース)ポートは、3.5mmオーディオジャックとHDMIポートの間にあります。 

Raspberry Pi 3/4のカメラポート

(画像提供:Tom's Hardware)

Pi Zero / Zero W では、カメラ ポートが唯一のリボン ケーブル ポートであり、ボードの microSD カード スロットの反対側にあります。

Raspberry Pi Zeroのカメラポート

(画像提供:Tom's Hardware)

ほとんどのカメラ モジュールに付属している標準サイズのリボン ケーブルは幅が広すぎるため、Pi Zero / Zero W の狭いポートには適合しません。そのため、それらのいずれかを使用する予定の場合は、Pi Zero 専用に設計されたカメラ ケーブルが必要になります (カメラによってはケーブルが付属しているものもありますが、別途購入する必要があるものもあります)。

ケーブルをポートに挿入するのは非常に繊細な操作です。 

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

1.ポート上部のプラスチックカフを持ち上げて緩めます。カフを引き抜かないでください。カフを引き抜けば元に戻せるはずですが、私が試したPi Zeroの1台では、プラスチックが破損しました。  

2.  リボン ケーブルを、金属の歯が Pi 3/4 の HDMI ポートに面するように、または Pi Zero の場合は下を向くようにして ポートに差し込みます。

3.  カフをカチッと押し下げてケーブルを固定します。カフを押し込む際は、ケーブルをポートに押し込み続ける必要があります。ケーブルが少しでも緩んでいると、抜けてしまったり、機能しなくなったりする可能性があります。 

カメラケーブルを接続したRaspberry Pi

(画像提供:Tom's Hardware)

4.   Raspbianでカメラモジュールを有効にします。コマンドラインでraspi-configを起動し、「インターフェース」メニューに移動して「カメラ」をオンにします。再起動を求められます。 

Raspberry Piでカメラを有効にする

(画像提供:Tom's Hardware)

5.カメラが動作するか確認するために写真を撮ります。コマンドラインに次のコマンドを入力してください。 

raspistill -o mytest.jpg

ウィンドウ環境の場合は、画面に数秒間画像が表示されます。表示されない場合は、作成したJPGファイルを表示してみてください。 

Raspberry Piウェブカメラでサンプル写真を撮る

(画像提供:Tom's Hardware)

PiとPC間の最適な接続を実現する

6.   PCをRaspberry Piに接続します。Raspberry PiをPCに接続するには、主に4つの方法があります。 

  •  USB直接接続(Pi Zero / Zero Wのみ):おそらくこれが最適な接続方法です。この接続を有効にするには、 /boot/config.txtの末尾に「dtoverlay=dwc2」というテキストを追加し、 /boot/cmdline.textの「rootwait」という単語の後に「modules-load=dwc2,g_ether」を追加してください。Windowsをお使いの場合は、Bonjour Printer Servicesをインストールしてください。Pi Zeroは、Pi本体の「USB」と表示されているmicro USBポートを介して、PCのUSBポートに接続する必要があります。PCでインターネット共有が有効になっていることを確認してください(下記参照)。 
  •  Wi-Fi: PCとRaspberry Piが同じWi-Fiネットワークに接続されていることを確認してください。802.11ac対応のRaspberry Pi(Pi 4 BまたはPi 3 B+)を使用すると便利です。 
  •  イーサネット: Raspberry Pi をルーターに接続します。 
  • イーサネット直接接続: Raspberry PiからPCへイーサネットケーブルを直接接続できます。PCにイーサネットポートがない場合、または既に使用されている場合は、USB-Ethernetアダプタを使用できます。この方法は一見最善のように思えますが、私のテストでは最も速度が遅くなりました。また、何らかの理由で、ストリームにアクセスするために、Raspberry Piのホスト名(例:raspberrypi)ではなくIPアドレスを入力する必要がありました。 

デスクトップパソコンまたはノートパソコンにUSBまたはイーサネットで直接接続している場合は、パソコンのインターネット接続をRaspberry Piと共有する必要があります。Windowsでこれを行うには、コントロールパネルのネットワーク接続メニューに移動し、パソコンのイーサネット接続を右クリックして「プロパティ」を選択します。 

インターネット接続のプロパティを選択する

(画像提供:Tom's Hardware)

次に、[共有] タブで共有を有効にし、Pi が使用しているイーサネット接続を選択します (Pi Zero の USB 接続もここではイーサネット接続としてラベル付けされています)。 

接続共有を有効にする

(画像提供:Tom's Hardware)

mjpg-streamerからのストリーミングの設定 

7.コマンドプロンプトに以下のコードを入力して、必要なライブラリをインストールします。

sudo apt-get install cmake libjpeg8-dev -y

8.以下のコードを入力して、さらに必要なソフトウェアをインストールします。特にRaspbianの最新バージョンをお使いの場合は、既にインストールされている可能性が高いです。

sudo apt-get install gcc g++ -y

9.次のコマンドを入力して、mjpg-streamerをクローン、コンパイル、インストールします。

git clone https://github.com/jacksonliam/mjpg-streamer
cd mjpg-streamer/mjpg-streamer-experimental && make && sudo make install 

mjpg_streamer 設定のテスト

10.   mjgp_streamer のさまざまな設定をテストして、どの設定がうまくいくかを確認します。この時点で mjpg_streamer はインストールされていますが、Raspberry Pi のモデルとネットワーク接続レベルに最適なカメラ解像度とフレームレートを見つける必要があります。 

次のように入力して呼び出すことができる最も低いレベルの設定から始めます。

mjpg_streamer -i “input_raspicam.so” -o output_http

アクティブであることを示すメッセージが表示されます。  

mjpg_streamer を実行して Raspbery Pi をウェブカメラとして使用する

(画像提供:Tom's Hardware)

配信の品質をテストするには、PCでブラウザを開き、http://[raspberrypihostname]:8080?action=streamにアクセスしてください。Raspberry Piのデフォルトのホスト名を変更していない場合は、 http://raspberrypi:8080/?action=streamになります。 

ブラウザウィンドウでRaspberry Piウェブカメラをテストする

(画像提供:Tom's Hardware)

さて、解像度とフレームレートを上げてみましょう。ターミナルウィンドウでCtrl + Cを押すと、mjpg_streamを停止できます。ただし、解像度をテストしてエラーメッセージが表示された場合は、再度試す前にRaspberry Piを再起動する必要があります。エラーが表示されなくても、Raspberry Piがアプリを終了しない場合があり、再起動が必要になります。

解像度は、パラメータ -x [水平解像度] -y [垂直解像度] -fps [フレーム/秒] を追加することで設定できます。720p、30fpsのストリームを取得するには、次のように入力します。 

mjpg_streamer -i "input_raspicam.so -x 1280 -y 720 -fps 30" -o output_http.so

Raspberry Pi Zero Wのカメラで1920 x 1080(フルHD)で撮影できましたが、30fpsでも動きが鈍かったです。720pで60fpsも撮れましたが、画像が暗くなってしまいました。そのため、ほとんどの人にとって720pで30fpsが最適な選択肢かもしれません。

mjpg_streamerを起動するためのBashスクリプトを作成する 

好みの設定が決まったら、簡単なコマンドで簡単に起動できる bash スクリプトを作成する必要があります。 

11.次のように入力して、 startcam.sh という新しいファイルを作成します。 

sudo nano startcam.sh

12.  コードを入力します。先頭行に #!/bin/bash と入力し、その後に mjp_streamer の起動コードを入力します。例えば、以下のようになります。 

#!/bin/bash
mjpg_streamer -i "input_raspicam.so -x 1280 -y 720 -fps 30" -o output_http.so

Raspberry Piをウェブカメラとして使う

(画像提供:Tom's Hardware)

 終了するにはCTRL+Xを押し、保存するにはYを押します

13.次のように入力して、 startcam.sh を実行可能にします。 

sudo chmod a+x startcam.sh

これで、ホーム ディレクトリにいるときにコマンド プロンプトで次のように入力することで、いつでも起動できるようになります。 

./smartcam.sh

14.   Raspberry Piを起動するたびにstartcam.shを実行したい場合は、/etc/rc.localファイルの末尾、 exit 0コマンドの上にstartcam.shを追加してください。フルパス名(例:/home/pi/startcam.sh)を使用してください。  

Raspberry PiをWebカメラとして使う、rc.localを編集する

(画像提供:Tom's Hardware)

Windows PCのセットアップ 

15.   IP カメラ アダプターをダウンロードしてインストールします 

16.  IP カメラ アダプターの構成を起動します。

17.カメラ フィード URL (通常はhttp://raspberrypi:8080?action=stream)を入力し、[自動検出] ボタンをクリックしてテストし、解像度を取得します。

Raspberry Pi をウェブカメラとして使用するための IP カメラ アダプターの設定

(画像提供:Tom's Hardware)

18.お気に入りのビデオ会議アプリの設定で、  MJPEG カメラを選択します。

Skypeの設定を変更してRaspberry Piをウェブカメラとして使用する

(画像提供:Tom's Hardware)

MJPEGカメラは、Skype、Google Meet、Zoomなど、ほとんどの会議アプリでオプションとして表示されるはずです。ただし、Skypeの場合、MJPEGカメラはSkypeデスクトップ版のバージョン8.58で利用可能でしたが、Windows 10版Skypeでは利用できないことがわかりました。

チャット中に、映像と音声が完全に同期していないことに気付くかもしれません。解像度とfpsを下げるほど、映像はより滑らかになります。また、PCとRaspberry Piの接続状態を良好にすることで、画質が向上します。 

その他のRaspberry Piチュートリアル

  • Raspberry Piを初めてセットアップする方法
  • Raspberry Piでスクリーンショットを撮る方法
  • Raspberry Pi Webサーバーのセットアップ方法
  • Raspberry Pi 4または3をSSDまたはフラッシュドライブから起動する方法
  • Raspberry Piでカスタムキーボードショートカットを作成する方法
  • Raspberry Pi 4でエミュレータを実行する方法
  • Raspberry Piユーザーが知っておくべき25以上のLinuxコマンド
  • Raspberry Piでニュースティッカーシャツを作る方法

Avram Piltchは特別プロジェクト担当の編集長です。仕事で最新ガジェットをいじったり、展示会でVRヘルメットを装着したりしていない時は、スマートフォンのルート化、PCの分解、プラグインのコーディングなどに取り組んでいます。技術的な知識とテストへの情熱を活かし、Avramはノートパソコンのバッテリーテストをはじめ、数多くの実環境ベンチマークを開発しました。