クラウドに録画したカメラ映像からタイムラプス動画を作って日常を振り返ろう

2022-07-04
日常で楽しむクラウドテクノロジー

Author : 三平 悠磨

こんにちは、IoT スペシャリストソリューションアーキテクトの三平です。

この数年、インターネットに接続する機能をもつ様々なカメラ製品がリリースされていますね。例えば、Amazon からは今年 Ring という セキュリティカメラビデオドアベル の製品が発売されました。こういった製品を買ってきて使うのももちろん良いのですが、AWS のクラウドサービスを活用すると、顔検出機能付きのセキュリティカメラ や 画角制御機能付きのセキュリティカメラ を作ることができます。

このように自分でセキュリティカメラの仕組みを構築することのメリットとして、収集した映像を自由自在に活用することができます。この記事では、AWS のサービスを活用してクラウド録画型のセキュリティカメラを構築し、収集した映像からタイムラプス動画を生成することで、日常を楽しく振り返ってみようと思います。

オフィスの窓際に設置したカメラから生成したタイムラプス動画

ご注意

本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。

*ハンズオン記事およびソースコードにおける免責事項 »

このクラウドレシピ (ハンズオン記事) を無料でお試しいただけます »

毎月提供されるクラウドレシピのアップデート情報とともに、クレジットコードを受け取ることができます。 


1. システムの構成

本記事では以下のような構成のシステムを作成します。Raspberry Pi に接続された USB カメラからの映像を Amazon Kinesis Video Streams というサービスを利用してクラウドに収集します。そして、 Python スクリプトで Kinesis Video Streams に収集された動画から画像フレームを取得し、OpenCV を用いてタイムラプス動画を生成します。

本記事で作成する構成

1-1. 用意するハードウェア

この記事の手順を実施するためには、以下のハードウェアを利用します。

Raspberry Pi 4 と USB カメラ


2. Raspberry Pi のセットアップ

2-1. Raspberry Pi OS のセットアップ

microSD にアクセスできる PC で Raspberry Pi Imager を利用して、microSD カードに Raspberry Pi OS を書き込みます。OS は Raspberry Pi OS (64-bit) を選択します。

最新の Raspberry Pi OS ではデフォルトの pi ユーザが廃止されているので、GUI ベースでセットアップをしない場合、右下の歯車のボタンから、ユーザ名とパスワード、SSH や Wi-Fi の設定をしておくと便利です。

Raspberry Pi Imager

OS が書き込めたら microSD を Raspberry Pi に挿入し、電源を入れ、Wi-Fi もしくは有線 LAN 経由でインターネットに接続します。GUI もしくは SSH 経由で Raspberry Pi のターミナルにログインしてください。これ以降のコマンドは、Raspberry Pi のターミナル上で順に実行していきます。

Raspberry Pi のターミナルで以下のコマンドを実行し、この後の手順に必要なパッケージをインストールします。

sudo apt update
sudo apt install -y \
    cmake \
    m4 \
    libssl-dev \
    libcurl4-openssl-dev \
    liblog4cplus-dev \
    libgstreamer1.0-dev \
    libgstreamer-plugins-base1.0-dev \
    gstreamer1.0-plugins-base-apps \
    gstreamer1.0-plugins-bad \
    gstreamer1.0-plugins-good \
    gstreamer1.0-plugins-ugly \
    gstreamer1.0-tools

2-2. Raspberry Pi OS のセットアップ

最新の Raspberry Pi OS (bullseye) ではカメラ周りのソフトウェアに変更があったのですが、既存のサンプルアプリを動作させるため、Legacy Camera を有効化します。

Raspberry Pi のターミナルで以下のコマンドを実行し、表示されたダイアログで以下の設定を行います。

sudo raspi-config
  1. 3 Interface Options を選択
  2. I1 Legacy Camera Enable/disable を選択
  3. Would you like to enable legacy camera support?<Yes> を選択
  4. Legacy camera support is enabled と表示されるので <Ok> を選択
  5. <Finish> を選択し、Would you like to reboot now?<Yes> を選択

Raspberry Pi が再起動するので、起動したら再度ターミナルに接続します。


3. Amazon Kinesis Video Streams への動画のストリーミング

3-1. Amazon Kinesis Video Streams Producer SDK C++ のセットアップ

Kinesis Video Streams に動画を送るため、Amazon Kinesis Video Streams Producer SDK C++ をセットアップしていきます。Raspberry Pi のターミナルで以下のコマンドを実行し、GitHub から Producer SDK C++ の v3.3.0 をクローンします。

cd
git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git -b v3.3.0

続いて、ビルド用のフォルダを作成し、依存ライブラリおよび SDK をビルドします。ビルドが完了するまで20分ほどかかります。

mkdir -p amazon-kinesis-video-streams-producer-sdk-cpp/build
cd amazon-kinesis-video-streams-producer-sdk-cpp/build
cmake -DBUILD_GSTREAMER_PLUGIN=ON ..
make

3-2. Amazon Kinesis Video Streams ストリームの作成

AWS CLI が利用できる PC もしくは AWS CloudShell などの環境から、以下のコマンドを実行して、raspi4-stream という名前の Kinesis Video Streams のストリームを作成します。後でタイムラプス映像を生成できるよう、収集した動画を 7 日間 (168 時間) 保存するように設定します。

aws kinesisvideo create-stream \
    --stream-name raspi4-stream \
    --data-retention-in-hours 168

以下のようなレスポンスが返って来れば成功です。

{
    "StreamARN": "arn:aws:kinesisvideo:ap-northeast-1:012345678901:stream/raspi4-stream/..."
}

3-3. サンプルアプリケーションの起動

アプリケーションを実行する際に、AWS のクレデンシャルが必要になります。AWS CLI を利用できる PC などを用いて AmazonKinesisVideoStreamsFullAccess の権限を持つユーザーで以下のコマンドを実行し、一時的なクレデンシャルを取得します。

aws sts get-session-token

以下のような結果が得られます。

{
    "Credentials": {
        "AccessKeyId": "...",
        "SecretAccessKey": "...",
        "SessionToken": "...",
        "Expiration": "2022-06-15T00:39:31Z"
    }
}

Raspberry Pi のターミナルに戻って、以下のコマンドで環境変数を設定します。リージョンは、Amazon Kinesis Video Streams が利用できるリージョンを選択してください。サービスが利用可能なリージョンは リージョン表 から調べることが可能です。

export AWS_ACCESS_KEY_ID="上記の AccessKeyId の値"
export AWS_SECRET_ACCESS_KEY="上記の SecretAccessKey の値"
export AWS_SESSION_TOKEN="上記の SessionToken の値"
export AWS_DEFAULT_REGION="利用するリージョン (例: ap-northeast-1)"

Raspberry Pi に USB カメラを接続します。Raspberry Pi のターミナルで以下のコマンドを実行し、Producer SDK のサンプルアプリケーションを起動して、Kinesis Video Streams へカメラの映像をストリーミングします。引数として、カメラがサポートしている解像度 1280 x 720 px、フレームレート10fps の組み合わせおよび、ビットレート 1024 kbps を指定しています。

cd ~/amazon-kinesis-video-streams-producer-sdk-cpp/build
./kvs_gstreamer_sample raspi4-stream -w 1280 -h 720 -f 10 -b 1024

Kinesis Video Streams のマネジメントコンソール から raspi4-stream を選択し、メディア再生のビューワーに USB カメラの映像がストリーミングされていることを確認します。

メディア統計の部分には、映像のコーデックや解像度、ビットレートなどの情報が表示されています。

メディア再生ビューワーに Raspberry Pi からのライブ映像が表示されます
(クリックすると拡大します)


4. アプリケーションの常時起動設定 (オプション)

本セクションの実施は任意です。すぐにタイムラプス動画を生成してみたいという方は、Kinesis Video Streams のサンプルアプリケーションを起動したまま、「5. タイムラプス動画の生成」のセクションへ進んでください。

3-3. では、AWS の一時認証情報を利用してサンプルアプリケーションを起動しましたが、この一時認証情報には有効期限があるため、アプリケーションを長時間実行しようとすると、認証情報が失効する度に再度一時認証情報を設定し直さなくてはなりません。タイムラプス動画を生成するためには、長時間アプリケーションを起動し続ける必要があり、これでは不便です。

そこで利用できるのが、AWS IoT の Credentials Provider という仕組みです。Credentials Provider を用いると、AWS IoT Core で管理された X.509 のクライアント証明書を用いて、Kinesis Video Streams に対してアクセスするための一時認証情報を取得できます。Kinesis Video Streams Producer SDK では Credentials Provider をサポートしており、設定だけで簡単に利用することができます。これによって、Raspberry Pi に予めクライアント証明書を入れておけば、一時認証情報の取得や失効の管理は Producer SDK に任せることができます。

ここでは、Credentials Provider の利用に必要な AWS IAM および AWS IoT のリソースを作成していきます。AWS CLI を利用できる PC や AWS CloudShell を用いて、以下のコマンドを実行していきます。

4-1. IAM ポリシーの作成

以下のコマンドを実行して、Kinesis Video Streams に対して動画を送信する権限を持った IAM ポリシーを作成します。

aws iam create-policy \
    --policy-name RasPiKVSPolicy \
    --policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"kinesisvideo:PutMedia\",\"kinesisvideo:GetDataEndpoint\",\"kinesisvideo:DescribeStream\"],\"Resource\":\"arn:aws:kinesisvideo:*:*:stream/\${credentials-iot:ThingName}/*\"}]}"

以下のような結果が表示されるので、この Arn の値を控えておきます。

{
    "Policy": {
        "PolicyName": "RasPiKVSPolicy",
        "PolicyId": "...",
        "Arn": "arn:aws:iam::012345678901:policy/RasPiKVSPolicy",
        "Path": "/",
        "DefaultVersionId": "v1",
        "AttachmentCount": 0,
        "PermissionsBoundaryUsageCount": 0,
        "IsAttachable": true,
        "CreateDate": "2022-05-25T04:06:45+00:00",
        "UpdateDate": "2022-05-25T04:06:45+00:00"
    }
}

4-2. IAM ロールの作成

続いて、以下のコマンドを実行して IAM ロールを作成します。

aws iam create-role \
    --role-name RasPiKVSRole \
    --assume-role-policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Sid\":\"\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"credentials.iot.amazonaws.com\"},\"Action\":\"sts:AssumeRole\"}]}"

以下のような結果が表示されるので、この Arn の値も控えておきます。

{
    "Role": {
        "Path": "/",
        "RoleName": "RasPiKVSRole",
        "RoleId": "...",
        "Arn": "arn:aws:iam::012345678901:role/RasPiKVSRole",
        "CreateDate": "2022-05-25T04:10:40+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Sid": "",
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "credentials.iot.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        }
    }
}

4-3. ポリシーのアタッチ

最後に、以下のコマンドを実行して IAM ロールに IAM ポリシーをアタッチします。コマンドの中の --policy-arn には 4-1. で控えた値をペーストします。

aws iam attach-role-policy \
    --role-name RasPiKVSRole \
    --policy-arn "4-1.で控えたポリシーの Arn の値 (例: arn:aws:iam::012345678901:policy/RasPiKVSPolicy)"

続いて、作成した IAM ロールを Credentials Provider から呼び出すための AWS IoT の設定を行なっていきます。

4-4. ロールエイリアスの作成

以下のコマンドを実行してロールエイリアスを作成します。コマンドの中の --role-arn には 4-2. で控えた値をペーストします。

aws iot create-role-alias \
    --role-alias RasPiKVSRoleAlias \
    --role-arn "4-2.で控えたロールの Arn の値 (例: arn:aws:iam::012345678901:role/RasPiKVSRole)"

以下のようなレスポンスが表示されます。

{
    "roleAlias": "RasPiKVSRoleAlias",
    "roleAliasArn": "arn:aws:iot:ap-northeast-1:0123456789012:rolealias/RasPiKVSRoleAlias"
}

4-5. IoT ポリシーの作成

続いて、IoT ポリシーを作成します。以下のコマンドのうち、リージョン:アカウントID の部分をお使いのものに置き換えて(例: ap-northeast-1:012345678901)、実行します。

aws iot create-policy \
    --policy-name RasPiKVSPolicy \
    --policy-document "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"iot:AssumeRoleWithCertificate\",\"Resource\":\"arn:aws:iot:リージョン:アカウントID:rolealias\/RasPiKVSRoleAlias\"}]}"

以下のようなレスポンスが表示されます。

{
    "policyName": "RasPiKVSPolicy",
    "policyArn": "arn:aws:iot:ap-northeast-1:0123456789012:policy/RasPiKVSPolicy",
    "policyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"iot:AssumeRoleWithCertificate\",\"Resource\":\"arn:aws:iot:ap-northeast-1:0123456789012:rolealias\\/RasPiKVSRoleAlias\"}]}",
    "policyVersionId": "1"
}

4-6. モノの作成

以下のコマンドを実行して IoT のモノを作成します。

aws iot create-thing --thing-name raspi4-stream

以下のようなレスポンスが表示されます。

{
    "thingName": "raspi4-stream",
    "thingArn": "arn:aws:iot:ap-northeast-1:0123456789012:thing/raspi4-stream",
    "thingId": "..."
}

4-7. 証明書と鍵の発行

次に、証明書と鍵を発行します。以下のコマンドを実行すると、コマンドを実行したフォルダに certificate.pem.crtprivate.pem.keypublic.pem.key という 3 つのファイルが作成されます。これらのファイルは後で Raspberry Pi に転送して利用します (AWS CloudShell を利用した場合は、コマンド実行後に Actions > Download File からファイルをダウンロードしてください)。

aws iot create-keys-and-certificate \
    --set-as-active \
    --certificate-pem-outfile "certificate.pem.crt" \
    --public-key-outfile "public.pem.key" \
    --private-key-outfile "private.pem.key"

以下のような結果が出力されるので、certificateArn の値を控えておきます。

{
    "certificateArn": "arn:aws:iot:ap-northeast-1:0123456789012:cert/...",
    "certificateId": "...",
    ...
}

4-8. ポリシーのアタッチ

以下のコマンドを実行して IoT ポリシーを証明書にアタッチします。コマンドの中の --target には 4-7. で控えた値をペーストします。

aws iot attach-policy \
    --policy-name "RasPiKVSPolicy" \
    --target "4-7.で控えた certificateArn の値 (例: arn:aws:iot:ap-northeast-1:0123456789012:cert/...)"

4-9. モノのアタッチ

また、以下のコマンドを実行して証明書をモノにアタッチします。こちらも、コマンドの中の --principal には 4-7. で控えた値をペーストします。

aws iot attach-thing-principal \
    --thing-name raspi4-stream \
    --principal "4-7.で控えた certificateArn の値 (例: arn:aws:iot:ap-northeast-1:0123456789012:cert/...)"

4-10. Credentials Provider のエンドポイントの確認

最後に、以下のコマンドを実行して、Credentials Provider のエンドポイントを確認しておきます。

aws iot describe-endpoint --endpoint-type iot:CredentialProvider

以下のような結果が得られますので、この endpointAddress の値を控えておきます。

{
    "endpointAddress": "cxxxxxxxxxxxxx.credentials.iot.ap-northeast-1.amazonaws.com"
}

長くなりましたが、以上で IAM および AWS IoT の設定が完了しました。

4-11. Raspberry Pi の設定

まず、先ほどダウンロードしたファイルのうち、 certificate.pem.crtprivate.pem.key の 2 ファイルを Raspberry Pi のユーザのホームディレクトリに、SCP などで転送します(ファイル名は certificate.pem.crtprivate.pem.key のままにしてください)。

さて、ここからは Raspberry Pi のターミナルに切り替えて操作を行います。以下のコマンドを実行し、AWS IoT のルート CA 証明書をダウンロードします。

cd
wget https://www.amazontrust.com/repository/AmazonRootCA1.pem -O AmazonRootCA1.pem

続いて、Kinesis Video Streams のサンプルアプリケーションを自動起動するための systemd の設定ファイルを作成します。

kvs-producer.service というファイルを以下の内容で作成します。

IOT_GET_CREDENTIAL_ENDPOINT の値には 4-10. で控えたエンドポイントをペーストします。また、東京リージョン以外を利用する場合は AWS_DEFAULT_REGION の値も変更してください。なお、Raspberry Pi OS のユーザ名を pi 以外で作成した場合は、User=pi および /home/pi (5 箇所) も書き換えてください。

[Unit]
Description=Amazon Kinesis Video Streams Producer
After=network-online.target

[Service]
User=pi
WorkingDirectory=/home/pi/amazon-kinesis-video-streams-producer-sdk-cpp/build
Restart=always
RestartSec=10
Environment="IOT_GET_CREDENTIAL_ENDPOINT=4-10.で控えた Credentials Provider の endpointAddress の値 (例: cxxxxxxxxxxxxx.credentials.iot.ap-northeast-1.amazonaws.com)"
Environment=AWS_DEFAULT_REGION=ap-northeast-1
Environment=CERT_PATH=/home/pi/certificate.pem.crt
Environment=PRIVATE_KEY_PATH=/home/pi/private.pem.key
Environment=CA_CERT_PATH=/home/pi/AmazonRootCA1.pem
Environment=ROLE_ALIAS=RasPiKVSRoleAlias
ExecStart=/home/pi/amazon-kinesis-video-streams-producer-sdk-cpp/build/kvs_gstreamer_sample raspi4-stream -w 1280 -h 720 -f 10 -b 1024

[Install]
WantedBy=multi-user.target

以下のコマンドを実行して、Raspberry Pi の起動時に Kinesis Video Streams のサンプルアプリケーションが自動起動するように設定します。

sudo cp kvs-producer.service /etc/systemd/system/
sudo systemctl enable kvs-producer.service --now

以下のコマンドを実行して、自動起動設定したプロセスが問題なく動作しているかを確認します。

sudo systemctl status kvs-producer.service

以下のように Active: active (running) となっていれば、プロセスは問題なく動作しています。

● kvs-producer.service - Kinesis Video Streams Producer
     Loaded: loaded (/etc/systemd/system/kvs-producer.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2022-05-25 07:34:05 BST; 1min 17s ago

3-3. と同様に、Kinesis Video Streams のマネジメントコンソール から raspi4-stream を選択すると、メディア再生のビューワーに USB カメラの映像がストリーミングされていることを確認できます。


5. タイムラプス動画の生成

5-1. Python スクリプトの実行

さて、タイムラプス動画を作成するために、Raspberry Pi および USB カメラをある程度の時間起動しておきましょう。作りたい動画の期間に応じて、1時間〜1日間くらいで試されることをオススメします。なお、Raspberry Pi を起動している間は Kinesis Video Streams に動画が収集され、データ量に応じた料金が発生します。料金については「6. サービス料金」で紹介していますのであわせてご確認ください。

まずは、タイムラプス動画を生成するための環境を設定していきます。Python3 のインストールされた PC もしくは Raspberry Pi でタイムラプス動画を生成するためのサンプルコードを GitHub からクローンします。

git clone https://github.com/aws-samples/amazon-kinesis-video-streams-time-lapse-video-example.git

サンプルコードで利用するライブラリ (boto3, opencv-python) をインストールします。

cd amazon-kinesis-video-streams-time-lapse-video-example
pip3 install -r requirements.txt

サンプルコード内では boto3 を利用して Kinesis Video Streams にアクセスするため、クレデンシャルが必要になります。「3-3. サンプルアプリケーションの起動」で説明したように環境変数を設定するか、こちらの手順 を参考にクレデンシャルの設定を行ってください。クレデンシャルの設定が済んだら、以下のようなコマンドを実行します。

コマンド内の --start-times--end-time にはタイムラプス動画を生成する開始時点と終了時点の時刻を UTC タイムゾーンで入力します(3-3. もしくは 4-11. の手順によって、当該の時間帯に Kinesis Video Streams に動画が収集されている必要があります)。 --duration には、生成するタイムラプス動画の長さ (秒) を指定します。

python3 main.py \
  --stream-name raspi4-stream \
  --start-time 2022-07-01T00:00:00\
  --end-time 2022-07-01T09:00:00 \
  --duration 3 \
  --width 1280 \
  --height 720 \
  --output-path result.mp4

コマンドを実行すると、同一フォルダ内に result.mp4 という名前でタイムラプス動画のファイルが生成されます。動画を確認して、時間帯や長さを変えながら、素敵なタイムラプス動画が生成されるか是非色々試してみましょう。

ある日の自分の在宅勤務中の様子をタイムラプス動画にしてみました。イヤホンをしていた時間や悪い姿勢で座っていた時間が分かりそうですね。

応用例として、生成した動画を Amazon S3 に書き出すように Python スクリプトを変更し、AWS Lambda 関数や Amazon ECS のタスクとして定期的に実行することで、毎日自動的に 1 日の振り返り動画を生成することも可能です。

録画した映像全てを長期間保存するかわりに、タイムラプス動画の形式で残すことで、思い出をコストパフォーマンスよく記録していくことができますね。

5-2. 仕組みの解説

Kinesis Video Streams では 2022 年 5 月にマネージドの 画像出力機能をリリース しました。この機能を用いると、Kinesis Video Streams に取り込んだ動画データのフレームをオンデマンドで画像ファイルとして取得したり、定期的に Amazon S3 のバケットに出力したりすることができます。これによって、取り込んだ動画データに対して画像分析を行う機械学習パイプラインを作成したり、動画のサムネイルやこの記事のようにタイムラプス動画を生成したりすることが、簡単にできるようになりました。

5-1. で利用した Python スクリプトでは、Kinesis Video Streams の GetImages API を利用し、特定の時刻の画像フレームを取得しています。引数で指定された時間帯を均等に分割し、各時刻の画像フレームを取得、OpenCV を用いて 1 つの動画ファイルに集約することでタイムラプス動画を生成しています。


6. サービス料金

この記事で作成したカメラ動画の収集と、タイムラプス動画の生成のシステムを常時運用したときの Kinesis Video Streams のコストを見積もります (2022 年 6 月現在、東京リージョンの料金)。以下のような前提を置きます。

  • カメラ映像のビットレート : 1 Mbps (H.264, 1280 x 720 px, 10 fps)
  • カメラ映像の収集: 常時
  • カメラ映像の保存期間: 7 日間
  • タイムラプス動画の生成 : 1 日 1 回、30 fps、10 秒の動画を生成

この前提の場合、1 日あたりに Kinesis Video Streams に取り込まれるデータ量および、取り出される画像は以下の通りです。

  • 1 日あたりに収集されるデータ量 : 1 Mbps ÷ 8 bit / byte × 86,400 秒 / 日 = 10.8 GB / 日
  • 1 日あたりに生成される画像枚数 : 30 fps × 10秒 = 300 枚 / 日

Amazon Kinesis Video Streams の料金 によると、取り込まれたデータ、保存されたデータおよび画像の生成のコストがかかりますので、上記のデータ量および画像枚数とかけ合わせると以下のようになります。

  • 1 ヶ月あたりのデータ取り込み料金 : 10.8 GB × 30 日 × 0.01097 USD / GB = 3.55 USD /月
  • 1 ヶ月あたりのデータ保存料金 : 10.8 GB × 7日 × 0.025 USD / GB・月 = 1.89 USD / 月
  • 1 ヶ月あたりの画像生成料金 : 300 枚 / 日 × 30日 × 10 USD / 100万枚 = 0.09 USD / 月

合計すると 5.53 USD / 月 の料金がかかることが分かりました。なお、Kinesis Video Streams の取り込みや保存料金はデータ量に比例しますので、例えばカメラのビットレート (解像度やフレームレート) を下げたり、昼間のみ動画を収集するようにしたりすることで、より安価なコストでこのシステムを運用することができます。


7. クリーンアップ

本記事で作成したリソースを削除する場合は、この手順を実施してください。

7-1. Raspberry Pi

4. の手順を実施した場合は、Raspberry Pi のターミナルで以下のコマンドを実行して Kinesis Video Streams のサンプルアプリケーションの自動起動を無効化します。

sudo systemctl disable kvs-producer.service --now
sudo rm /etc/systemd/system/kvs-producer.service

Kinesis Video Streams Producer SDK 自体が不要な場合は、~/amazon-kinesis-video-streams-producer-sdk-cpp フォルダを削除します (ファイルを残しておいても課金は発生しません)。

7-2. Amazon Kinesis Video Streams

データの保存料金が発生するため、取り込んだ動画データが不要になった場合はストリームを削除しましょう。Kinesis Video Streams のマネジメントコンソール から raspi4-stream を選択し、「ビデオストリームを削除」を選択、「削除」と入力し「削除」を選択することで、ストリームを削除します。


8. まとめ

この記事では、Raspberry Pi に接続された USB カメラ からクラウドに収集した動画から、タイムラプス動画を生成する方法について紹介しました。この仕組みを用いれば、ホームセキュリティカメラの映像から日常の様子を振り返ったり、屋外のカメラ映像から景色の変化を楽しんだり、店舗のカメラから時間帯による混雑度を調べたり、といった様々な目的に活用することができます。

また、本記事で構築した録画の仕組みに、録画した映像の 再生用アプリケーション を追加することで、簡易的なクラウド録画対応の監視カメラシステム (VSaaS: Video Surveillance as a Service) を構築することもできます。さらに、収集した動画に対して機械学習を組みわせることで、より実用的なシステムを構築することも可能です。ぜひ こちらのハンズオンブログ記事 を参考に、カメラや動画を活用していただければと思います。


builders.flash メールメンバーへ登録することで
AWS のベストプラクティスを毎月無料でお試しいただけます


筆者紹介

三平 悠磨 (みひら ゆうま)
アマゾン ウェブ サービス ジャパン合同会社
IoT スペシャリスト ソリューションアーキテクト

ソフトウェアエンジニアとして会話 AI やロボット開発を経験しました。AWS では IoT スペシャリストソリューションアーキテクトとして、お客様の IoT 関連案件を支援しています。趣味はバンドと作曲で、プログラミングやテクノロジーを駆使して音楽をもっと楽しくしたいと思っています。 

AWS を無料でお試しいただけます

AWS 無料利用枠の詳細はこちら ≫
5 ステップでアカウント作成できます
無料サインアップ ≫
ご不明な点がおありですか?
日本担当チームへ相談する