最近、Windows10 のサンドボックス環境で、Amazon Kinesis Video Stream(KVS) のC++用プロデューサーSDK のビルド環境をあれこれ試していて、ようやく気付いたんだけど、Windows版GStreamer って、バージョン1.18以降でインストール先のフォルダ構成など変わっていたようです。
そのおかげで、Amazon Kinesis Video Stream(KVS) のC++用プロデューサーSDK で GStreamer用のプラグインをビルドしようとしたときに、バージョン1.16 系だとうまくいって、1.18 以降だとうまくいかなくなっていました。
いろいろ試しすぎて、何をやったらうまくいったのかわからなくなっていたのですが、ようやくわかりました。
結論としては、2022/6/15時点で最新のバージョン 1.20.2 でも、GStreamer をインストール後にフォルダ名を変更して、環境変数 PATH に設定することでビルドできました。
まず、Windows版の GStreamer 1.16.3 で以下のインストールファイルからインストールした場合。
gstreamer-1.0-msvc-x86_64-1.16.3.msi
インストールフォルダの構成はこのようになりました。
1 2 3 4 5 6 7 8 9 |
C:\GSTREAMER └─1.0 └─x86_64 ├─bin ├─etc ├─include ├─lib ├─libexec └─share |
続いて、GStreamer 1.20.2 で以下のインストールファイルからインストールした場合。
gstreamer-1.0-msvc-x86_64-1.20.2.msi
インストールフォルダの構成はこのようになっていました。
1 2 3 4 5 6 7 8 9 10 |
C:\GSTREAMER └─1.0 └─msvc_x86_64 ├─bin ├─etc ├─include ├─lib ├─libexec └─share |
C:\GSTREAMER\1.0 までは同じですが、その下のフォルダが「x86_64」と「msvc_x86_64」と異なっていました。
KVS の C++用プロデューサーSDK に含まれる CMakeLists.txt の128行目あたりに以下の記述があります。
1 2 3 |
if (WIN32) set(PKG_CONFIG_EXECUTABLE "C:\\gstreamer\\1.0\\x86_64\\bin\\pkg-config.exe") endif() |
なんと、GStreamer のフォルダ名が直接記載されています。しかも、1.16 系までのフォルダ名です。
1.18以降でフォルダ名が「x86_64」から「msvc_x86_64」に変更になったため、うまくビルドできなくなってしまいました。
結局、このフォルダ名を「msvc_x86_64」から「x86_64」に変更して、関連する環境変数も書き換えることで、無事にビルドできるようになりました。
CMakeの構成でも、以下のようにちゃんと認識しています。
1 2 3 4 5 6 7 8 |
~中略~ [cmake] Building Custom Rule C:/work/amazon-kinesis-video-streams-producer-sdk-cpp/dependency/libkvscproducer/kvscproducer-src/dependency/libkvspic/CMakeLists.txt [cmake] -- Bitness 64 bits [cmake] -- Checking for module 'gstreamer-app-1.0' [cmake] -- Found gstreamer-app-1.0, version 1.20.2 [cmake] -- Configuring done [cmake] -- Generating done [cmake] -- Build files have been written to: C:/work/amazon-kinesis-video-streams-producer-sdk-cpp/build |
過去にはメインPCでいろいろ試しすぎて、このフォルダ名を変えてみたり、CMakeFiles.txt 変えてみたりした結果、環境がぐちゃぐちゃになって、原因の切り分けに時間がかかったけど、サンドボックスを使うと毎回きれいな環境で始められるので助かります。