以前、Rocky Linux 8 で Amazon Kinesis Video Stream(KVS) のC++用プロデューサーSDKをGStreamer プラグインとしてビルドしようと頑張ってみたんだけど、結局できませんでした。おそらくCeontOS 8系も同様かと思います。
やっぱり、OpenSSL のバージョンが、OS付属のものとSDK付属のもので異なっていることが原因なのかなぁと。
改めて試行錯誤して気づいたんだけど、git とか事前にインストールしていなくても、自動で入れてくれるみたい。git をインストールしていない状態でgit コマンド投げると以下のようになりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
bash: git: コマンドが見つかりませんでした... コマンド git' を提供するためにパッケージ 'git-core' をインストールしますか? [N/y] y * キューで待機中... * パッケージの一覧をロード中。... 以下のパッケージはインストールされるべきものです: git-core-2.31.1-2.el8.x86_64 Core package of git with minimal functionality 変更したまま継続しますか? [N/y] y * キューで待機中... * 認証を待ち受け中... * キューで待機中... * パッケージをダウンロード中... * データを要求中... * 変更をテスト中... * パッケージのインストール中... Cloning into 'amazon-kinesis-video-streams-producer-sdk-cpp'... remote: Enumerating objects: 6242, done. remote: Counting objects: 100% (10/10), done. remote: Compressing objects: 100% (9/9), done. remote: Total 6242 (delta 1), reused 3 (delta 1), pack-reused 6232 Receiving objects: 100% (6242/6242), 11.37 MiB | 12.88 MiB/s, done. Resolving deltas: 100% (2657/2657), done. |
まぁ、入れることがわかっていれば、入れておいたほうが無難ですが、こういったサポート機能はうれしいですね。
で、本題ですが、SDK付属の libssl と libcrypto を削除して、OS付属のものにリンクし直したら、無事にビルドできました。
※作成した buid ディレクトリで作業している場合
1 2 3 |
rm -rf ../open-source/local/lib/libssl.* ../open-source/local/lib/libcrypto.* ln -s /usr/lib64/libcrypto.so.1.1 ../open-source/local/lib/libcrypto.so ln -s /usr/lib64/libssl.so.1.1 ../open-source/local/lib/libssl.so |
これで make も通るようになりました。
今回はCPUが4つあるので、以下のようにすることで make も早くなりました。
1 |
make -j4 |
改めて、手順を整理すると以下のようになります。
1.必要なパッケージをインストール
1 2 3 4 5 6 7 8 9 10 |
dnf install \ cmake \ gstreamer1 \ gstreamer1-devel \ gstreamer1-plugins-base \ gstreamer1-plugins-base-devel \ gstreamer1-plugins-good \ gstreamer1-plugins-bad-free \ gstreamer1-plugins-base-devel \ libcurl-devel |
2.適当なディレクトリを作成し、git clone してビルドする。
1 2 3 4 5 6 7 |
git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git cd amazon-kinesis-video-streams-producer-sdk-cpp/ mkdir build cd build cmake .. -DBUILD_GSTREAMER_PLUGIN=ON make -j4 ※j4 の部分はCPUの数に合わせて変えてください |
3.GStreamerプラグインのパスと、ライブラリのパスを指定する。
1 2 |
export GST_PLUGIN_PATH=/YourPath/amazon-kinesis-video-streams-producer-sdk-cpp/build export LD_LIBRARY_PATH=/YourPath/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib |
4.プラグインとして認識するか確認する。
1 |
gst-inspect-1.0 kvssink |
このように表示されたら大丈夫。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Factory Details: Rank primary + 10 (266) Long-name KVS Sink Klass Sink/Video/Network Description GStreamer AWS KVS plugin Author AWS KVS <kinesis-video-support@amazon.com> Plugin Details: Name kvssink Description GStreamer AWS KVS plugin Filename /YourPath/amazon-kinesis-video-streams-producer-sdk-cpp/build/libgstkvssink.so Version 1.0 License Proprietary Source module kvssinkpackage Binary package GStreamer Origin URL http://gstreamer.net/ GObject +----GInitiallyUnowned +----GstObject +----GstElement +----GstKvsSink |
あとは、Amazon Linux 2 で動作確認した内容と一緒なので、そちらを参照ください。