Windows 10 のコマンドラインで KVS のC++用プロデューサーSDKをビルドしようとしたら大変だった

Rocky Linux 8 で Amazon Kinesis Video Stream(KVS) のC++用プロデューサーSDKをGStreamer プラグインとして使おうと思ったら一筋縄でいかなかったので、Windows 10でチャレンジ。

Webで検索しても、古い情報しか見つからなくて、同じ手順ではビルドできないみたい。
2020年くらいの手順で試してもダメだったので、試行錯誤することになっちゃった。

今回もGStreamerのプラグインとして使いたいので、公式サイトからダウンロードしてインストールします。新しいバージョンだとインストールフォルダの構成が変わってしまったらしく、うまくビルドできないので、今回は 1.16.3 を使います。
Windows 10 の64bit版なので、MSVC 64-bit で以下2つを入れました。

gstreamer-1.0-msvc-x86-1.16.3.msi
gstreamer-1.0-devel-msvc-x86_64-1.16.3.msi

ランタイムとデベロップメントの両方必要なので忘れずに。オプションはCompleteを選択。
パスが長くなるので、Cドライブ直下にインストールしました。

あと、Perlスクリプトを実行する必要があり、WindowsでのPerl実行環境もいくつか選択肢があるのですが、「We recommend Strawberry Perl」とのことなので、Strawberry Perlの公式サイトから strawberry-perl-5.32.1.1-64bit.msi をダウンロードしてインストール。

続いて、CMake3を公式サイトから Windows x64 Installer である cmake-3.23.1-windows-x86_64.msi をダウンロードしてインストール。

で、Curl が必要と記載がありましたが、ビルド作業のなかで Git から取得してビルドしてくれるみたい。

あとはC++用プロデューサーSDKをビルドするために、Visual Studio 2022 Community エディションをインストールします。
個人もしくは組織での学習目的であれば無償で使えるIDEです。
「C++によるデスクトップ開発」を選択し、インストールの詳細では、デフォルトで選択されているものに加え、以下2つを選びました。
・v143ビルドツール用C++モジュール(x64/x86)
・Windows 10 SDK(10.0.20348.0)
※Windows 10 SDKのバージョンによってうまくいかないことがあるようです。

そしてようやくKVSプロデューサーをビルドします。ここまで長かった・・・。
Visual Studio 2022 Community エディションが正常にインストールできると、スタートメニューに「x64 Native Tools Command Prompt for VS 2022」ができているので、ここから実行。
パスが長くなると厄介なので、今回はCドライブ直下にkvsフォルダを作成して、そこで作業しました。

Git for Windows を公式サイトから、Git-2.36.1-64-bit.exe をダウンロードしてインストールします。
インストール後、Filename too long を回避するため、Git Bash を起動して、以下のコマンドを実行します。

また、Filename too long のエラーを回避するために、レジストリを変更します。以下のキーがなかったら REF_DWORD で作成し、値を1にしておく。
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled

これでようやくビルドする準備が整いました。

あとは git cloneしてビルドする。

今回はGStreamer のプラグインを作成するためのオプションを指定しています。
以下のようなメッセージが表示されたら成功。
※cmake に失敗することがあるのですが、なぜかもう1回 cmake するとうまくいくことがあります。なんでだろう?わかったら追記します。

そしたらnmakeします。

環境変数「GST_PLUGIN_PATH」に GStreamer のライブラリと、今回ビルドしたプラグインのパスを設定します。
今回の構成だと、値は以下のようにします。
C:\gstreamer\1.0\x86_64\lib;C:\kvs\amazon-kinesis-video-streams-producer-sdk-cpp\build
※各自の環境に合わせてください。
あと、環境変数「PATH」に GStreamer の実行ファイル、ライブラリのパス、今回ビルドしたプラグイン、実行ファイル、ライブラリのパスを追加します。
今回の構成なら、以下の5行になります。
C:\gstreamer\1.0\x86_64\bin
C:\gstreamer\1.0\x86_64\lib
C:\kvs\amazon-kinesis-video-streams-producer-sdk-cpp\build
C:\kvs\amazon-kinesis-video-streams-producer-sdk-cpp\open-source\local\bin
C:\kvs\amazon-kinesis-video-streams-producer-sdk-cpp\open-source\local\lib

ここまで出来たら動作確認。GStreamer のプラグインとして kvssink を認識しているか以下のコマンドで確認。

こんな感じで表示されたら成功。

ビルドがうまくいったら、環境変数にアクセスキーIDとシークレットアクセスキーを、デフォルトリージョンを東京に設定。

ここまでできたら、Tapo C200 の RTSP の URLを指定して、動画をストリームしてみる。

事前にKVS側でストリーム名を作成していなくても、ここで指定したリージョンで指定したストリームが作成されました。

うまくいっていれば、マネジメントコンソールで、対象のリージョンで Kinesis Video Streams を開き、ビデオストリームから、対象のストリーム名を選択、メディア再生で動画が確認できます。

事前準備が結構大変だけど、無事にWindowsでもカメラの動画をストリーミングできました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

PAGE TOP