カメラモジュールの映像をH.264で圧縮してRTSPプロトコルによりストリーミング配信

まずは、前準備としてRaspberry Piにカメラモジュールが正しく接続されていることを確認しよう。

raspi-configを起動してEnable Cameraを<Enable>に設定し、ビデオ出力をH.264で圧縮して出力するコマンドraspividが使えることを確認しておく。

  1. $ raspivid --help

カメラモジュールの確認が済んだら、次にLIVE555のソースをダウンロードして解凍する。解凍の結果、liveというディレクトリができる。

  1. $ wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz
  2. $ tar zxvf live555-latest.tar.gz

このliveディレクトリに移動してコンパイルする。

  1. $ cd live
  2. $ ./genMakefiles linux
  3. $ make

さらにtestRaspiのソースをこちらからダウンロードする。liveディレクトリでこれを解凍すると、その下にraspiディレクトリができる。このraspiディレクトリに移動する

  1. $ tar xvzf testRaspi.tar.gz
  2. $ cd raspi

このraspiディレクトリにあるMakefileの一部を次のように変更する。

  1. COMPILE_OPTS = $(INCLUDES) -I. -O2 -DSOCKLEN_T=socklen_t -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64 -DACCESS_CONTROL

もう1つ、このraspiディレクトリにあるtestRaspi.cppの一部を次のように変更する。

  1. #ifdef ACCESS_CONTROL
  2.  // To implement client access control to the RTSP server, do the following:
  3.  authDB = new UserAuthenticationDatabase;
  4.  authDB->addUserRecord("pi", "raspberry"); // replace these with real strings
  5.  // Repeat the above with each , that you wish to allow
  6.  // access to the server.
  7. #endif

最後にtestRaspiをコンパイルする。

  1. $ make

コンパイルが成功するとカレントディレクトリにtestRaspiができているはずだ。これを実行するとH.264で圧縮されたカメラの映像がRTSPプロトコルによってストリーミング配信される。

  1. $ raspivid -w 1280 -h 720 -fps 25 -b 10000000 -t 99999999 -o - | ./testRaspi
  2. "h264" stream, from the file "stdin"
  3. Play this stream using the URL "rtsp://192.168.1.80:8554/h264"
  4. (We use port 8000 for optional RTSP-over-HTTP tunneling.)

PC上のVLCプレーヤーから、表示されたURL(この例ではrtsp://192.168.1.80:8554/h264)にアクセスして確認する。VLCプレーヤーは、ユーザ名とパスワードを聞いてくるので、上記のtestRaspi.cppに設定したもの(この例では、pi/raspberry)を指定する。

※この方法では、恐ろしく大きなdelay(10秒以上)が生じたが、こちらの方法ではもう少しdelayが抑えられた。

2016年02月09日