5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RaspberryPiをWebカメラとして使用する

Last updated at Posted at 2021-04-11

経緯

お仕事で、RTSPストリーミング配信をするWebカメラが必用になった時、手元に RaspberryPi(とカメラモジュール) があったので、Webカメラは購入せずに RaspberryPi で代替えしようと検討してみました。
で、結局、H265の配信方法が分からなく、アマゾンセール 5,000円 のWebカメラを買いました。。。
面倒なことを考えたくない人は、アマゾンセールとかでWebカメラの購入をお勧めします。

動画配信の種類と使い方

ダイレクト UDP ストリーミング

ざっと調べた感じでは、omxplayer 以外ではストリーミング配信を受信できないっぽいです。
なので、ストリーミング配信端末と視聴端末は、どちらもRaspberryPiである必用がありそうです。。。

  • ストリーミング配信元 RaspberryPi

    $ raspivid -a 12 -t 0 -w 1920 -h 1080 -hf -ih -fps 30 -o udp://#:5000
    

    # はストリーミング配信先のIPアドレスです。

  • ストリーミング受信側 RaspberryPi

    $ omxplayer --win 0,0,800,480 udp://@:5000
    

ダイレクト TCP ストリーミング

この方法もストリーミングの視聴アプリに制限がありそうです。
VCL では視聴できますが、mplayer での視聴方法が分からなかった。。。

  • ストリーミング配信元 RaspberryPi

    $ raspivid -a 12 -t 0 -w 1920 -h 1080 -vf -ih -fps 30 -l -o tcp://0.0.0.0:5000
    
  • VLC での視聴方法
    メディア(M) ⇒ ネットワークストリームを開く(N) ⇒ ネットワークURLを入力してください に下記を入力して 再生 ボタン押下

    ```text
    tcp/h264://#:5000
    ```
    

raspivid コマンドお主なオプション

  • -a 12 # annotate
  • -t 0 # timeout disabled (default=5s)
  • -w 1280 # width
  • -h 720 # height
  • -hf # horizontal flip
  • #-vf # vertical flip
  • -ih # insert inline headers to stream
  • -fps 30 # frames per second
  • -o udp://192.168.1.10:5000 # 動画を受信する RaspberryPi のIP:Port

RTSPストリーミング

v4l2rtspserver

  • インストール

    $ sudo apt-get install cmake
    $ cd ~/
    $ git clone https://github.com/mpromonet/v4l2rtspserver.git
    $ cd v4l2rtspserver
    $ cmake .
    $ make
    $ sudo make install
    
  • カーネルモジュールのロード

    $ sudo modprobe bcm2835-v4l2
    
  • ストリーミングサーバ起動

    $ v4l2rtspserver -W 1920 -H 1080 -F 30
    

    ストリーミング配信されるビデオフォーマットはH264のようです。
    コンパイルログを見る限りH265にも対応してそうな感じですが、指定方法が分からなかった。。。

gstreamer

  • ライブラリのインストール

    $ sudo apt-get install gstreamer1.0 gstreamer1.0-tools
    $ sudo apt-get install libglib2.0-dev
    $ sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    
  • gstreamer server のインストール

    $ cd ~/
    $ wget https://gstreamer.freedesktop.org/src/gst-rtsp-server/gst-rtsp-server-1.10.4.tar.xz
    $ tar -xf gst-rtsp-server-1.10.4.tar.xz 
    $ cd gst-rtsp-server-1.10.4
    $ ./configure
    $ make
    $ sudo make install
    
  • gstreamer の RaspberryPi カメラモジュールのインストール

    $ cd ~/
    $ git clone https://github.com/thaytan/gst-rpicamsrc.git
    $ cd gst-rpicamsrc/
    $ ./autogen.sh 
    $ make
    $ sudo make install
    
  • ストリーミングサーバ起動

    $ ${HOME}/gst-rtsp-server-1.10.4/examples/test-launch --gst-debug=3 "( rpicamsrc bitrate=10000000 awb-mode=tungsten preview=false ! video/x-h264, width=1920, height=1080, framerate=30/1 ! h264parse ! rtph264pay name=pay0 pt=96 )"
    

ストリーミング視聴法

  • VLC での視聴方法
    'メディア(M) ⇒ ネットワークストリームを開く(N) ⇒ ネットワークURLを入力してくださいに下記を入力して再生` ボタン押下

    ```text
    rtsp://192.168.179.109:8554/unicast
    ```
    
  • mplayer での視聴方法

    $ mplayer rtsp://192.168.179.109:8554/unicast
    

参考サイト

5
6
1

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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?