ラズパイからラズパイカメラやUSBカメラで動画を配信する方法はよく使用されています。ここではMJPGstreamerで配信している動画を保存します。
ロボットから動画の配信+保存に使います。
MJPG stremerでインターバル撮影
MJPGStreamerでファイルとして保存する機能はありますが、画像として保存されます。コマンドから保存するなら、一秒間に30枚の画像を保存する設定にしておき、後ほど画像から動画にする必要があります。
piフォルダのmjpg-streamer下のmjpg-streamer-experimentに実行ファイルがあるとき以下のコマンドで画像を保存できます。(予め mkdir /home/pi/mjpg-streamer/mjpg-streamer-experimental/pics を実行して、保存先フォルダを作成しておきます)
-d 1000で撮影間隔を設定します。この設定では一秒
1 2 3 |
cd /home/pi/mjpg-streamer/mjpg-streamer-experimental ./mjpg_streamer -o "./output_http.so -w ./www" -o "output_file.so -f pics -d 1000" -i "./input_raspicam.so -x 640 -y 480 -fps 30 -q 10" |
動画ファイルとして保存
mjpg streamerだけでは動画として保存はできなさそうなので、配信している動画を読み込んで保存します。
保存にはffmpegを利用します。ffmpegは動画の変換やちょっとした編集に使われます。ここでは、ffmpegの入力にストリーミングを出力先をファイルにすることで保存します。
インストール
1 |
sudo apt-get -y install ffmpeg |
実行
カメラを搭載しているラズパイに保存するときのコマンドです。
まずは、mjpgstreamerを実行しておきます。(ここではラズパイカメラからの配信です)
1 2 3 |
cd /home/pi/mjpg-streamer/mjpg-streamer-experimental ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 30 -q 10" |
配信をしてから、保存するときに以下のコマンドを実行します。最後のfile.flvがファイル名ですので、お好みで変更してください。終了時はキーボードの[q]を押します。
1 |
ffmpeg -i http://127.0.0.1:8080/?action=stream -an -vcodec flv file.flv |
画質を変更するときはmjpgstreamerの配信側の設定で行います。今回の例では-x 640 -y 480を変更する。Full HD なら -x 1920 -y 1080(このときの動画は4fpsぐらい)
また,ffmpegを実行するところの127.0.0.1をラズパイのIPアドレスに変更すると同じネットワークに接続した他のラズパイに保存できます。(PCにffmpegを入れればパソコンに保存も可能、Widnows PCならBash on Windowsが手っ取り早い)
もちろん、動画を保存しながらブラウザ上で動画を見られます。