マガジンのカバー画像

24 時間クラウド録画防犯カメラサービスを作る!

15
「24時間クラウド録画防犯カメラサービスを作る!」シリーズ記事をまとめました
運営しているクリエイター

記事一覧

①サービスの全体構成

本シリーズの目的本シリーズでは、複数回に分けて、防犯カメラ映像を24時間クラウドサーバーに保存し続けるサービスを作ります。 最後までご覧いただければ、必ず動くサービスを作ることができると思います。 しかし、本シリーズの目指すところは、ただサービスが出来上がる、というところではなく、設計検討のポイントや、技術内容の説明なども加えながら、インターネット上の動画配信技術の基本的な知識と実装方法の習得にあります。 ある程度、思った通りのプログラムが組めるレベルになったプログラマ

②RTSPと映像/音声の多重化(RTSP/RTP/MPEG2-TS)

前回の記事はこちら はじめに最近の防犯カメラは、ほとんどがネットワークカメラで、RTSP(Real Time Streaming Protocol) に対応しています。 そこで、今回作るシステムでも、USB接続のUVCカメラ(CSB Video Classカメラ)だけでなく、RTSP対応のネットワークカメラも使える構成を考えていきます。 ちなみに、ネットワークカメラというと、ONVIF(Open Network Video Interface Forum) 対応を謡ってい

③クラウドの準備(AWS)

前回の記事はこちら それでは、実際にサービスを作っていきたいと思います。 はじめにまずは、クラウドサーバーとして使用するAWSの設定から行っていきます。 ここでは、以下の設定をAWSで行います。 MPEG2-TSファイルを保存するAWS S3のバケット作成 上記S3バケットのライフサイクルルールを設定 上記S3バケットにデータを保存する為の権限を持ったユーザの作成 AWSを使用しますので、AWSのアカウントが必要になります。 アカウントがない人は下記を参考にア

④カメラとの接続情報調査(FFmpeg)

前回の記事はこちら はじめに本章では、クラウドレコーダを動かすための環境構築と、RTSPカメラ/UVCカメラを調査して、FFmpeg の入力情報を取得します。 クラウドレコーダでは下記の処理を行います。 RTSP対応カメラと接続し、映像/音声データを受信する。もしくは、PCにUSBで接続されたUVCカメラ(USB Video Classカメラ)から、映像/音声データを取得し、H.264/AACに圧縮(Encode)する 受信した映像/音声データをMPEG2-TSに多重

⑤クラウドレコーダを動かす(Python)

前回の記事はこちら はじめにそれでは、クラウドレコーダ作成して、実際に動かしてみます。 本記事の後半は有料記事になっており、ソースコードの説明と全ソースコードの公開を行っています。 ソースコード概要説明クラウドレコーダは下記の4つのPythonコードで構成されています。 __main__.py m2ts_muxser.py m2ts_uploader.py s3_uploader.py 全ソースコードは、本章の最後に載せていますので、これら4つのPythonフ

有料
1,800

⑥クラウドサービスの運用コスト(AWS)

前回の記事はこちら はじめに今回のシステムでは、クラウドサーバーにAWSを使用しています。 無料枠などが設定されていますが、使用していくと、当然コストが発生します。 本章では、今回作成するシステムを運用していったときに、どの程度のコストが発生するかの目安を説明します。 最も運用コストが大きいのがクラウドストレージのAWS S3になります。 S3では、大きく以下の運用コストが発生します。 ストレージ料金 S3に保存しているデータの総容量にかかる料金 リクエスト料金

⑦動画配信の構成(HTTP Live Streaming)

前回の記事はこちら はじめに今回のシステムでは、AWS S3に保存された動画を、ウェブブラウザを使用して視聴できるようにしたいと思います。 動画配信のプロトコルには、HLS(HTTP Live Streaming) を使用します。 HLSによる動画配信では、専用の動画配信サーバーを必要とせず、Apacheのような通常のHTTP配信機能があれば動画配信が実現できます。 また、CDN(Content Delivery Network) のキャッシュサーバーとも相性が良く、

⑧動画配信用にクラウドストレージの設定を変更(AWS)

前回の記事はこちら はじめにAWS S3上にアップロードされたMPEG2-TSファイルをHLS(HTTP Live Streaming)で配信するには、これらの動画ファイルをHTTPで公開する必要があります。 本章では、MPEG2-TSファイル保存用に作成したAWS S3バケットを、公開する為の設定を行います。 公開の為に実施する設定は以下の2点です。 静的ウェブサイトホスティングの有効化 バケットをパブリックアクセス許可に設定する 静的ウェブサイトホスティングの

⑨M3U8生成WebAPIの作成(Python/AWS Lambda)

前回の記事はこちら はじめに本章では、HLS(HTTP Live Streaming)のインデックスファイルであるM3U8を動的に生成して返却するLambda関数をPythonで作成します。 AWS Lambdaとは、いわゆるサーバーレスなシステムを実現する為の、イベント駆動型コンピューティングサービスです。 今回は、Lambdaで、指定した区間の動画を再生する為のM3U8ファイルを、動的に作成する機能を作ります。 さらに、WebAPIとして通常のHTTPリクエストで

有料
1,200

⑩M3U8生成WebAPIの動作確認(Python/AWS Lambda)

前回の記事はこちら はじめに前回作成したLambda関数を実際に動かして動作を確認してみます。 動作確認を行う前に、クラウドレコーダを5分程動かして、MPEG2-TSファイルをアップロードしておいてください。 また、その録画時刻もメモしておいてください。 Lambda関数の実行前章で作成したLambda関数は、関数URLを作成している為、通常のウェブブラウザからアクセス可能になっています。 試しに、作成された関数URLにブラウザでアクセスしてみてください。 以下の

⑪CORS(Cross-Origin Resource Sharing)の設定(AWS Lambda)

前回の記事はこちら はじめに前章でM3U8生成Lambda関数の動作確認にVLC Media Playerを使用しましたが、毎回アプリを起動し、URLを入力して再生するのは大変です。 そこで、ブラウザ上で録画した動画を再生できるようにしていきます。 言語としてはJavaScriptを使用し、VideoJSを使ってHLS再生を行っていきます。 その時考えなければいけないのが、CORS(Cross-Origin Resource Sharing) です。 Same-Or

⑫動画再生プレイヤーの作成(JavaScript)

前回の記事はこちら はじめに今回の記事では、JavaScriptを使ったビデオプレイヤーを作成します。 動画再生処理には、VideoJSを使用します。 なお、本記事の後半は有料記事になっており、全ソースコードの公開を行っています。 動画再生プレイヤーの配置動画再生プレイヤーは以下の2つのファイルで構成されます。 index.html 動画再生プレイヤーを配置したHTMLファイル player.js index.htmlで読み込まれるJavaScriptファイル

有料
1,200

⑬簡易ライブビューの仕組み

前回の記事はこちら はじめにここまでで、カメラの映像をクラウド上に保存し、ブラウザでその動画を再生する機能が出来上がりました。 本章では、ここまでで出来上がったシステムに、リアルタイムにカメラ映像を確認するライブビューの機能を追加していきたいと思います。 簡易ライブビューカメラ映像をリアルタイムに確認するライブビューの仕組みはいくつかありますが、今回は、JPEG画像のコマ送りによる、簡易的なライブビューを作ります。 基本的な構成は、下記の記事で紹介した方法と同じです。

⑭簡易ライブビュー機能をクラウドレコーダに追加(Python)

前回の記事はこちら はじめに本章では、クラウドレコーダに簡易ライブビューの機能を追加していきます。 なお、本記事の後半は有料記事になっており、ソースコードの説明と全ソースコードの公開を行っています。 クラウドレコーダの変更点簡易ライブビューを実現する為に、今までのクラウドレコーダにもう一つFFmpegを追加します。 最初のFFmpegから出力されるMPEG2-TSパケットを、MPEG2-TSアップローダだけでなく、JPEG切り出し用の2つ目のFFmpegの入力にも流し

有料
1,200