亞馬遜AWS Kinesis Video Streams with KVS demo示例
title: 亞馬遜AWS Kinesis Video Streams with KVS demo示例
categories:[Linux C]
tags:[亞馬遜雲平臺]
date: 2021/12/22
作者:hackett 微信公眾號:加班猿Kinesis Video Streams 不僅用於儲存視訊資料。您還可以用它來實時監視視訊流,因為這些流在雲中接收。您既可以在 AWS 管理控制檯中監控實時流,也可以開發自己的監控應用程式,以便使用 Kinesis Video Streams API 庫顯示實時視訊。
1、物件模型
Kinesis Video Streams C 建立者庫基於稱為獨立於平臺的程式碼庫 (PIC) 的通用元件,該元件在 GitHub 上的
- 裝置資訊提供程式 – 公開
DeviceInfo
結構,該結構可直接提供給 PIC API。有一組易於配置的提供程式,包括應用程式場景優化的提供程式,可以根據您應用程式處理的流的數量和型別來優化內容儲存,並根據可用 RAM 的數量優化配置的所需快取數量。 - 流資訊提供程式 – 公開
StreamInfo
結構,該結構可直接提供給 PIC API。有一組易於配置提供程式,特定於應用程式型別以及常見型別的流式處理場景。這包括諸如視訊、音訊、音訊/視訊多軌道等提供程式。每個這些場景都有預設值,您可以根據應用程式需求進行定義。 - 回撥提供程式 – 公開
ClientCallbacks
結構,該結構可直接提供給 PIC API。這包括一組易於配置的回撥提供程式,面向網路(基於 CURL 的 API 回撥)、授權(AWS 憑證 API)、在錯誤回撥上重試流式處理等。回撥提供程式 API 獲取一系列引數進行配置,例如 AWS 區域和授權資訊(通過 IoT 證書或通過 AWS AccessKeyId、SecretKey、SessionToken)。如果您的應用程式需要進一步處理特定回撥以實現某些應用程式特定的邏輯,則可以通過自定義回撥來增強回撥提供程式。 - FrameOrderCoordinator – 幫助處理多軌道場景的音訊和視訊同步。它具有預設行為,您可以自定義以處理應用程式特定的邏輯。它還首先在 PIC 幀結構中簡化幀元資料打包,然後提交到較低層的 PIC API。對於非多軌道場景,此元件直接傳遞到 PIC putFrame API。
C 庫提供以下物件來管理向 Kinesis 視訊流傳送資料的過程:
- KinesisVideoClient – 包含有關裝置的資訊,並維護回撥以報告 Kinesis Video Streams 事件。
- KinesisVideoStream – 表示包含有關視訊流的引數的資訊,例如,名稱、資料保留期、媒體內容型別,等等。
2、環境準備
-
為 macOS 安裝以下構建依賴項:
- Autoconf 2.69 (許可證 GPLv3+/Autoconf:GNU GPL 版本 3 或更高版本)
- CMake 3.7 或 3.8
- Pkg-Config
- Flex 2.5.35 Apple (flex-31) 或更高版本
- Bison 2.4 (GNU 許可證)
- Automake 1.15.1 (GNU 許可證)
- GNU Libtool (Apple Inc. 版本 cctools-898)
- xCode (macOS) / clang / gcc (xcode-選擇版本 2347)
- Java 開發工具包 (JDK) (用於 Java JNI 編譯)
- Lib-Pkg
-
為 Ubuntu 安裝以下構建依賴項:
-
安裝 Git:
sudo apt-get install git
$ git --version git version 2.14.1
-
安裝 CMake:
sudo apt-get install cmake
$ cmake --version cmake version 3.9.1
-
安裝 Libtool:
sudo apt-get install libtool
2.4.6-2
-
安裝 libtool-bin:
sudo apt-get install libtool-bin
$ libtool --version libtool (GNU libtool) 2.4.6 Written by Gordon Matzigkeit, 1996
-
安裝 GNU Automake:
sudo apt-get install automake
$ automake --version automake (GNU automake) 1.15
-
安裝 GNU Bison:
sudo apt-get install bison
$ bison -V bison (GNU Bison) 3.0.4
-
安裝 G++:
sudo apt-get install g++
g++ --version g++ (Ubuntu 7.2.0-8ubuntu3) 7.2.0
-
安裝 curl:
sudo apt-get install curl
$ curl --version curl 7.55.1 (x86_64-pc-linux-gnu) libcurl/7.55.1 OpenSSL/1.0.2g zlib/1.2.11 libidn2/2.0.2 libpsl/0.18.0 (+libidn2/2.0.2) librtmp/2.3
-
安裝 pkg-config:
sudo apt-get install pkg-config
$ pkg-config --version 0.29.1
-
安裝 Flex:
sudo apt-get install flex
$ flex --version flex 2.6.1
-
安裝 OpenJDK:
sudo apt-get install openjdk-8-jdk
$ java -version openjdk version "1.8.0_171"
-
設定
JAVA_HOME
環境變數:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
-
執行構建指令碼:
./install-script
-
3、下載編譯KVS
下載:
建立一個目錄,然後從 GitHub 儲存庫克隆示例原始碼。
git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git
編譯:
在下載好的原始碼中建立一個build
目錄,並在build
中執行cmake
mkdir -p amazon-kinesis-video-streams-producer-c/build
cd amazon-kinesis-video-streams-producer-c/build
cmake .. // 這裡cmake的時候有可能會失敗,被牆了,最好自備梯子
您可以將以下選項傳遞給 cmake ..
-
-DBUILD_DEPENDENCIES
- 是否從原始碼構建依賴庫 -
-DBUILD_TEST=TRUE
- 構建單元/整合測試,可能有助於確認對您的裝置的支援。./tst/webrtc_client_test
-
-DCODE_COVERAGE
- 啟用覆蓋範圍報告 -
-DCOMPILER_WARNINGS
- 啟用所有編譯器警告 -
-DADDRESS_SANITIZER
- 使用 AddressSanitizer 構建 -
-DMEMORY_SANITIZER
- 使用 MemorySanitizer 構建 -
-DTHREAD_SANITIZER
- 使用 ThreadSanitizer 構建 -
-DUNDEFINED_BEHAVIOR_SANITIZER
- 使用 UndefinedBehaviorSanitizer 構建 -
-DALIGNED_MEMORY_MODEL
-為僅對齊記憶體模型的裝置構建。預設為OFF
。
完成後再回到build
中執行make
構建WebRTC C 開發工具包及其提供的示例
make
示例應用程式 kinesis_video_cproducer_video_only_sample
將資料夾 samples/h264SampleFrames
中的 h.264 編碼視訊幀傳送到 Kinesis Video Streams。以下命令以迴圈方式傳送 10 秒鐘的視訊幀到 Kinesis Video Streams:
./kinesis_video_cproducer_video_only_sample YourStreamName 10
如果指定要從其他資料夾(例如,MyH264FramesFolder
)傳送 H.264 編碼幀,您可以使用以下引數執行命令:
./kinesis_video_cproducer_video_only_sample YourStreamName 10 MyH264FramesFolder
如果你覺得文章還不錯,可以給個"三連",文章同步到個人微信公眾號[加班猿]
我是hackett,我們下期見