5
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

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

経緯

お仕事で、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を入力してください に下記を入力して 再生 ボタン押下

      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を入力してくださいに下記を入力して再生` ボタン押下

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

  $ mplayer rtsp://192.168.179.109:8554/unicast

参考サイト

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
5
Help us understand the problem. What are the problem?