title: 亞馬遜AWS Kinesis Video Streams with KVS demo示例
categories:[Linux C]
tags:[亞馬遜云平臺(tái)]
date: 2021/12/22
Kinesis Video Streams 不僅用于存儲(chǔ)視頻數(shù)據(jù)。您還可以用它來(lái)實(shí)時(shí)監(jiān)視視頻流,因?yàn)檫@些流在云中接收。您既可以在 AWS 管理控制臺(tái)中監(jiān)控實(shí)時(shí)流,也可以開(kāi)發(fā)自己的監(jiān)控應(yīng)用程序,以便使用 Kinesis Video Streams API 庫(kù)顯示實(shí)時(shí)視頻。
1、對(duì)象模型
Kinesis Video Streams C 創(chuàng)建者庫(kù)基于稱(chēng)為獨(dú)立于平臺(tái)的代碼庫(kù) (PIC) 的通用組件,該組件在 GitHub 上的 https://github.com/awslabs/amazon-kinesis-video-streams-pic/ 提供。PIC 包含面向低級(jí)別的獨(dú)立于平臺(tái)的業(yè)務(wù)邏輯。Kinesis Video Streams C 創(chuàng)建者庫(kù)通過(guò)額外的一層 API 打包 PIC,允許特定于場(chǎng)景和特定于平臺(tái)的回調(diào)和事件。Kinesis Video Streams C 創(chuàng)建器庫(kù)在 PIC 之上內(nèi)置了組件:
-
設(shè)備信息提供程序 – 公開(kāi)
DeviceInfo
結(jié)構(gòu),該結(jié)構(gòu)可直接提供給 PIC API。有一組易于配置的提供程序,包括應(yīng)用程序場(chǎng)景優(yōu)化的提供程序,可以根據(jù)您應(yīng)用程序處理的流的數(shù)量和類(lèi)型來(lái)優(yōu)化內(nèi)容存儲(chǔ),并根據(jù)可用 RAM 的數(shù)量?jī)?yōu)化配置的所需緩存數(shù)量。 -
流信息提供程序 – 公開(kāi)
StreamInfo
結(jié)構(gòu),該結(jié)構(gòu)可直接提供給 PIC API。有一組易于配置提供程序,特定于應(yīng)用程序類(lèi)型以及常見(jiàn)類(lèi)型的流式處理場(chǎng)景。這包括諸如視頻、音頻、音頻/視頻多軌道等提供程序。每個(gè)這些場(chǎng)景都有默認(rèn)值,您可以根據(jù)應(yīng)用程序需求進(jìn)行定義。 -
回調(diào)提供程序 – 公開(kāi)
ClientCallbacks
結(jié)構(gòu),該結(jié)構(gòu)可直接提供給 PIC API。這包括一組易于配置的回調(diào)提供程序,面向網(wǎng)絡(luò)(基于 CURL 的 API 回調(diào))、授權(quán)(AWS 憑證 API)、在錯(cuò)誤回調(diào)上重試流式處理等?;卣{(diào)提供程序 API 獲取一系列參數(shù)進(jìn)行配置,例如 AWS 區(qū)域和授權(quán)信息(通過(guò) IoT 證書(shū)或通過(guò) AWS AccessKeyId、SecretKey、SessionToken)。如果您的應(yīng)用程序需要進(jìn)一步處理特定回調(diào)以實(shí)現(xiàn)某些應(yīng)用程序特定的邏輯,則可以通過(guò)自定義回調(diào)來(lái)增強(qiáng)回調(diào)提供程序。 - FrameOrderCoordinator – 幫助處理多軌道場(chǎng)景的音頻和視頻同步。它具有默認(rèn)行為,您可以自定義以處理應(yīng)用程序特定的邏輯。它還首先在 PIC 幀結(jié)構(gòu)中簡(jiǎn)化幀元數(shù)據(jù)打包,然后提交到較低層的 PIC API。對(duì)于非多軌道場(chǎng)景,此組件直接傳遞到 PIC putFrame API。
C 庫(kù)提供以下對(duì)象來(lái)管理向 Kinesis 視頻流發(fā)送數(shù)據(jù)的過(guò)程:
- KinesisVideoClient – 包含有關(guān)設(shè)備的信息,并維護(hù)回調(diào)以報(bào)告 Kinesis Video Streams 事件。
- KinesisVideoStream – 表示包含有關(guān)視頻流的參數(shù)的信息,例如,名稱(chēng)、數(shù)據(jù)保留期、媒體內(nèi)容類(lèi)型,等等。
2、環(huán)境準(zhǔn)備
-
為 macOS 安裝以下構(gòu)建依賴(lài)項(xiàng):
- 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 開(kāi)發(fā)工具包 (JDK) (用于 Java JNI 編譯)
- Lib-Pkg
-
為 Ubuntu 安裝以下構(gòu)建依賴(lài)項(xiàng):
-
安裝 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"
-
設(shè)置
JAVA_HOME
環(huán)境變量:export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
-
運(yùn)行構(gòu)建腳本:
./install-script
-
3、下載編譯KVS
下載:
創(chuàng)建一個(gè)目錄,然后從 GitHub 存儲(chǔ)庫(kù)克隆示例源代碼。
git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-producer-c.git
編譯:
在下載好的源碼中創(chuàng)建一個(gè)build
目錄,并在build
中執(zhí)行cmake
mkdir -p amazon-kinesis-video-streams-producer-c/build
cd amazon-kinesis-video-streams-producer-c/build
cmake .. // 這里cmake的時(shí)候有可能會(huì)失敗,被墻了,最好自備梯子
您可以將以下選項(xiàng)傳遞給 cmake ..
-
-DBUILD_DEPENDENCIES
- 是否從源代碼構(gòu)建依賴(lài)庫(kù) -
-DBUILD_TEST=TRUE
- 構(gòu)建單元/集成測(cè)試,可能有助于確認(rèn)對(duì)您的設(shè)備的支持。./tst/webrtc_client_test
-
-DCODE_COVERAGE
- 啟用覆蓋范圍報(bào)告 -
-DCOMPILER_WARNINGS
- 啟用所有編譯器警告 -
-DADDRESS_SANITIZER
- 使用 AddressSanitizer 構(gòu)建 -
-DMEMORY_SANITIZER
- 使用 MemorySanitizer 構(gòu)建 -
-DTHREAD_SANITIZER
- 使用 ThreadSanitizer 構(gòu)建 -
-DUNDEFINED_BEHAVIOR_SANITIZER
- 使用 UndefinedBehaviorSanitizer 構(gòu)建 -
-DALIGNED_MEMORY_MODEL
-為僅對(duì)齊內(nèi)存模型的設(shè)備構(gòu)建。默認(rèn)為OFF
。
完成后再回到build
中執(zhí)行make
構(gòu)建WebRTC C 開(kāi)發(fā)工具包及其提供的示例
make
示例應(yīng)用程序 kinesis_video_cproducer_video_only_sample
將文件夾 samples/h264SampleFrames
中的 h.264 編碼視頻幀發(fā)送到 Kinesis Video Streams。以下命令以循環(huán)方式發(fā)送 10 秒鐘的視頻幀到 Kinesis Video Streams:
./kinesis_video_cproducer_video_only_sample YourStreamName 10
如果指定要從其他文件夾(例如,MyH264FramesFolder
)發(fā)送 H.264 編碼幀,您可以使用以下參數(shù)運(yùn)行命令:
./kinesis_video_cproducer_video_only_sample YourStreamName 10 MyH264FramesFolder
如果你覺(jué)得文章還不錯(cuò),可以給個(gè)"三連",文章同步到個(gè)人微信公眾號(hào)[加班猿]文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-473887.html
我是hackett,我們下期見(jiàn)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-473887.html
到了這里,關(guān)于亞馬遜AWS Kinesis Video Streams with KVS demo示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!