0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MacBookのカメラでAWS Kinesis Video Streamsを試してみた

Last updated at Posted at 2025-06-24

はじめに

映像のリアルタイム解析をするための一歩前のステップとして、まずは映像をAWSにリアルタイムで配信するところから始めようと思い、AWS Kinesis Video Streamsを使ってみました。
Kinesis Video Streamsは簡単に言うと、カメラからの映像をAWSにリアルタイムで送信することができるサービスです。
残念ながら手元に外付けのカメラが無かったので、MacBookの内蔵カメラで試してみました。

image.png

以降はMacBook M1(macOS 15.5)を使用した手順です。

作業手順

1. AWS CLIの認証情報を設定

まずはKinesis Video Streamsにアクセスするためのユーザーを作っていきます。

  • ユーザ名:kinesis-video-user
  • アタッチするポリシー:AmazonKinesisVideoStreamsFullAccess

アクセスキーを作成したら、Access KeyとSecret Keyをどこかにメモっておいてください。
次に、AWS CLIで認証情報を設定します。

% aws configure
AWS Access Key ID [None]: <先ほどメモったAccess Key>
AWS Secret Access Key [None]: <先ほどメモったSecret Key>
Default region name [None]: ap-northeast-1
Default output format [None]: json

2. Kinesis Video Streamの作成

AWSコンソール:AWS Kinesis Video Streamsでビデオストリームを作成します。

image.png
作成をクリック

image.png
ストリーム名にMyFirstStreamと入力。
その他の設定は変更せず、ビデオストリームを作成をクリックします。

image.png
このように表示されていればOKです!

3. 開発環境のセットアップ

GStreamerや関連ライブラリを一通りインストールします。

% brew install cmake pkg-config openssl curl gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav

AWS Kinesis Video Streams Producer SDKを取得します。

% git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
% cd amazon-kinesis-video-streams-producer-sdk-cpp

このSDKには、リアルタイムストリーミングに最適化されたkvssinkプラグインが含まれています。GStreamerのkvssinkプラグインを使用することで、カメラ映像をKinesis Video Streamsにリアルタイムでストリーミング配信できます。今回やりたいことですね!

4. SDKのビルド

ビルドディレクトリを作成します。

% mkdir build
% cd build

CMakeでビルド設定をします。
GStreamerプラグインを有効化するオプションやM1 MacのCPU用に最適化されたバイナリを生成するためのオプションをつけています。

% cmake .. -DBUILD_GSTREAMER_PLUGIN=ON \
  -DBUILD_DEPENDENCIES=OFF \
  -DCMAKE_OSX_ARCHITECTURES=arm64 \
  -DUSE_OPENSSL=ON \
  -DUSE_MBEDTLS=OFF

基本ビルドを実行します。

% make

個別でkvssinkプラグインを明示的にビルドします。

% make gstkvssink

デフォルトのビルドターゲットにkvssinkプラグインが含まれていなかったので、gstkvssinkターゲットを明示的にビルドしています。

これでビルドが完了しました!

5. カメラの確認と準備

MacBookの内蔵カメラが認識されているか確認します

% system_profiler SPCameraDataType
~省略~
Camera:
FaceTime HDカメラ:
  Model ID: FaceTime HDカメラ
  Unique ID: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
~省略~

このようにFaceTimeのカメラが表示されていればOKです!
GStreamerの方でもカメラを認識できているか確認します。

% gst-device-monitor-1.0 Video
~省略~
Device found:
name  : FaceTime HDカメラ
class : Video/Source
caps  : video/x-raw, width=640, height=480, format={ UYVY, YUY2, NV12, ARGB, BGRA }, framerate=30/1
        video/x-raw, width=1280, height=720, format={ UYVY, YUY2, NV12, ARGB, BGRA }, framerate=30/1
properties:
device.api = avf
avf.unique_id = EAB7A68F-EC2B-4487-AADF-D8A91C1CB782
gst-launch-1.0 avfvideosrc device-index=0 ! ...
~省略~

先ほど同様、FaceTimeのカメラが確認できればOKです!
カメラが正常に動作するか事前にテストしておきます。

% gst-launch-1.0 avfvideosrc device-index=0 ! \
    video/x-raw,width=640,height=480,framerate=30/1 ! \
    videoconvert ! autovideosink

カメラのLEDが緑点灯し、プレビューウィンドウから映像が確認できればOKです。
停止する時はCtrl+Cと入力してください。

6. リアルタイムストリーミング環境の設定

リアルタイムストリーミングでは、ストリーミング中に継続的なAWS認証が必要です。GStreamerのkvssinkプラグインは、環境変数からの認証情報取得を優先するようで、明示的に設定しておくことで安定性を向上させることができるそうです。

AWS認証情報を環境変数として設定します。

% export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id)
% export AWS_SECRET_ACCESS_KEY=$(aws configure get aws_secret_access_key)
% export AWS_DEFAULT_REGION=$(aws configure get region)

次に、GStreamerプラグインパスの設定をします。

% export GST_PLUGIN_PATH=$PWD:$GST_PLUGIN_PATH
% echo $GST_PLUGIN_PATH
/Users/kam/amazon-kinesis-video-streams-producer-sdk-cpp/build:

上記のように設定されていればOKです!

7. リアルタイムストリーミングの実行

Kinesis Video Streamsに映像ストリーミングデータを配信します。

% gst-launch-1.0 avfvideosrc device-index=0 ! \
    video/x-raw,width=1280,height=720,framerate=30/1 ! \
    videoconvert ! x264enc bitrate=1000 tune=zerolatency ! \
    kvssink stream-name="MyFirstStream"

各パラメータについて簡単にまとめておきます。

  • width=1280,height=720: HD画質で送信
  • framerate=30/1: 30fps(比較的滑らかな映像)
  • bitrate=1000: 1Mbps(そこそこ綺麗)
  • tune=zerolatency: なるべく遅延を少なくする設定

カメラのLEDが緑点灯し、ターミナルにストリーミングデータに関する情報が流れていればOKです!

8. AWSコンソールで映像を確認

最後に、AWSコンソール:AWS Kinesis Video Streamsから映像を確認してみましょう。

image.png
ビデオストリームをクリック

image.png
MyFirstStreamをクリック

image.png
メディア再生から映像が確認できれば成功です!

まとめ

Kinesis Video Streamsを使用してカメラから配信された映像ストリーミングデータをリアルタイムで確認することができました。AWSコンソール上で確認した映像は10秒ほど遅延していたので、ある程度の遅延の発生が許容されるユースケースで利用するのがいいかもしれませんね。
次はAmazon Rekognitionと連携させてリアルタイムの映像分析にチャレンジしたいと思います!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?