LoginSignup
61
62

More than 5 years have passed since last update.

Raspberry Pi3とUSB WEBカメラでストリーミング

Last updated at Posted at 2016-04-26

概要

Raspberry Pi3を購入したので、自宅で留守番するペットの見守り用に、WEBカメラの映像をストリーミングする環境を構築しました。

UV4L(Userspace Video4Linux framework)とは

Video4Linux2準拠のモジュラーコレクションです。
様々なエクステンションが用意されており、
インストールすることで、ストリーミングが可能となります。

UV4Lのインストール

piユーザーでの作業を想定しています。

1.リポジトリの追加

以下のコマンドを実行します。

$ sudo nano /etc/apt/sources.list

以下を末尾に追記します。

deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main

2.uv4lのインストール

以下のコマンドを実行します。

$ sudo apt-get install uv4l uv4l-webrtc uv4l-uvc uv4l-xscreen uv4l-dummy

依存するパッケージがいろいろインストールされたのを確認します。

$ dpkg -l | grep uv4l
ii  uv4l                                  1.9.10                                    armhf        User space Video4Linux Framework Core
ii  uv4l-decoder                          1.6                                       armhf        Video Hardware Decoder support for the
ii  uv4l-dummy                            1.0                                       armhf        Dummy driver module for UV4L.
ii  uv4l-encoder                          1.7                                       armhf        Video Hardware Encoder support for the
ii  uv4l-mjpegstream                      1.3-6                                     armhf        MJPEGStream driver module for UV4L.
ii  uv4l-renderer                         1.5                                       armhf        Video Renderer for the WebRTC Extension
ii  uv4l-server                           1.1.58                                    armhf        Streaming Server module for UV4L with HTTP/HTTPS front-end.
ii  uv4l-uvc                              1.5-1                                     armhf        Usb Video Class driver module for UV4L.
ii  uv4l-webrtc                           1.38                                      armhf        WebRTC extension for the
ii  uv4l-xmpp-bridge                      1.8                                       armhf        XMPP Bridge for UV4L
ii  uv4l-xscreen                          1.2                                       armhf        XScreen driver module for UV4L.

3.USBカメラ接続確認

家に転がっていたUSB WEBカメラ(iBUFFALO BSW20KMD10H)をラズベリーパイに接続します。

※WEBカメラはUVC(USB Video Class)に対応した機種である必要があります。

$ lsusb
Bus 001 Device 004: ID 1dd8:0018  
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Device004が新たに表示されるようになりました。

あとで使うので、「1dd8:0018」の部分をメモしておきます。

4.uv4lの起動

以下のコマンドを実行します。
--device-pathのところに

$ uv4l --driver uvc --device-id 1dd8:0018 --config-file=/etc/uv4l/uv4l-uvc.conf
<notice> [core] Trying driver 'uvc' from built-in drivers...
<warning> [core] Driver 'uvc' not found
<notice> [core] Trying driver 'uvc' from external plug-in's...
<error> [core] No device found at specified path 1dd8:0018
<alert> [core] No device detected

5.WEBブラウザからアクセス

下記のURLにアクセスすると、WebRTCを使用したストリーミングが可能となります。
「Call」ボタンをクリックすると、WEBカメラの映像が画面に表示されます。

http://<ラズベリーパイのIPアドレス>:8090/stream/webrtc

スクリーンショット 2016-04-26 23.37.55.png

iOS SafariはWebRTCに未対応のため、下記のURLから映像のみ(mjpeg)が閲覧できます。

http://<ラズベリーパイのIPアドレス>:8090/stream

6.終了する

下記のコマンドで終了できます。

$ sudo pkill uv4l

7.設定ファイルの編集

インストールした時点で自動起動が有効になっているので、デバイスIDを指定しておきます。
次回起動時は、そのままブラウザでストリーミング可能な状態となっています。

$ sudo nano /etc/uv4l/uv4l-uvc.conf
device-id = 1dd8:0018

外部から自宅ラズベリーパイにアクセスする場合は、下記の設定でBasic認証が有効にしておきましょう。
ID:user
PW:myp4ssw0rd

server-option = --user-password=myp4ssw0rd

8.オーディオの設定

WebRTCのストリーミングにて、音声を有効にするには、以下の設定ファイルを新規作成します。
ラズベリーパイを再起動すると有効になります。

$ sudo nano /etc/asound.conf
pcm.!default {
type asym
playback.pcm "plug:hw:0"
capture.pcm "plug:dsnoop:1"
}

まとめ

ラズベリーパイ標準のカメラモジュールを使った情報は多いのですが、WEBカメラでの設定は情報が少なかったので、情報共有します。
カメラモジュールの場合はポート8080が初期値になっていて、uvcでは8090が初期値だと気づくまでに、だいぶ時間がかかりました。。。

参考サイト

61
62
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
61
62