亞馬遜AWS Kinesis Video Streams with WebRTC demo示例
title: 亞馬遜AWS Kinesis Video Streams with WebRTC demo示例
categories:[Linux C]
tags:[亞馬遜雲平臺]
date: 2021/12/22
作者:hackett 微信公眾號:加班猿以下分步說明介紹如何使用下載、構建和執行 Kinesis Video Streams with WebRTC 開發工具包及其相應示例。
1、下載 C 中的 Kinesis Video Streams with WebRTC 開發工具包
執行以下命令:
git clone --recursive https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git
2、編譯構建 Kinesis Video Streams with WebRTC
完成以下步驟:
-
安裝 cmake:
- 在 macOS 上執行
brew install cmake pkg-config srtp
- 在 Ubuntu 上執行
sudo apt-get install pkg-config cmake libcap2 libcap-dev
- 在 macOS 上執行
-
獲取您要用於本演示的 AWS 賬戶的訪問金鑰和祕密金鑰。
-
執行以下命令在您下載的 WebRTC C 開發工具包中建立一個
build
目錄,並從中執行cmake
:mkdir -p amazon-kinesis-video-streams-webrtc-sdk-c/build cd amazon-kinesis-video-streams-webrtc-sdk-c/build cmake .. // 這裡cmake的時候有可能會失敗,被牆了,最好自備梯子
-
現在,您已經在
build
目錄中您剛剛使用上面的步驟建立,執行make
構建 WebRTC C 開發工具包及其提供的示例。注意:
這些區域有:
kvsWebrtcClientMasterGstSample
將不會構建,如果系統沒有gstreamer
安裝。要確保它已構建(在 macOS 上),您必須執行:brew install gstreamer gst-plugins-base gst-plugins-good
3、執行 C 中的 WebRTC 開發工具包的示例
在完成第2步之後,會在build目錄中生成以下demo應用程式:
kvsWebrtcClientMaster
- 此應用程式通過信令通道傳送示例 H264/Opus 幀(路徑:/samples/h264SampleFrames 和 /samples/opusSampleFrames)。它也接受傳入的音訊(如果在瀏覽器中啟用)。在瀏覽器中勾選時,它會列印終端中收到的音訊資料包的元資料。kvsWebrtcClientViewer
- 此應用程式接受示例 H264/Opus 幀並打印出來。kvsWebrtcClientMasterGstSample
- 此應用程式從 GStreamer 管道傳送示例 H264/Opus 幀。
要執行這些demo應用程式,要完成以下步驟:
-
使用 AWS 賬戶憑證設定您的環境:(AWS賬戶憑證需要自己從賬戶中獲取)
export AWS_ACCESS_KEY_ID= <Your AWS account access Key> export AWS_SECRET_ACCESS_KEY= <AWS account secret key> export AWS_KVS_CACERT_PATH= <Full path of your cert.pem file. It is typically available in the certs directory inside Kinesis-video-webrtc-native-build/certs/cert.pm>
-
通過將您要向信令通道提供的名稱傳遞給示例應用程式來執行任一應用程式。應用程式使用您提供的名稱建立信令通道。例如,要建立一個名為
myChannel
的信令通道並開始通過該通道傳送示例 H264/Opus 幀,請執行以下命令:./kvsWebrtcClientMaster myChannel
當命令列應用程式列印
Connection established
時,您可以繼續下一步。 -
現在您的信令通道已建立,並且連線的主裝置正在將媒體流式傳輸到它,您可以檢視此流。例如,您可以在 Web 應用程式中檢視此實時流。為此,請使用使用 Kinesis Video Streams with WebRTC 測試頁面 中的步驟開啟 WebRTC 開發工具包測試頁面,並使用您為上述主裝置指定的相同 AWS 憑證和相同信令通道設定以下值:
- 訪問金鑰 ID
- 祕密訪問金鑰
- 信令通道名稱
- 客戶端 ID(可選)
選擇 Start viewer (啟動檢視器) 以啟動示例 H264/Opus 幀的實時視訊流式傳輸。
可以選擇在網頁上/集成了WebRTC的Android、iOS APP檢視此流。
小結:
一個信令通道只能有一個主裝置
一個信令通道最多可以有 10 個連線的檢視器
建立連線後的資料互動:
VOID onDataChannelMessage(UINT64 customData, PRtcDataChannel pDataChannel, BOOL isBinary, PBYTE pMessage, UINT32 pMessageLen){ //連線
UNUSED_PARAM(customData);
UNUSED_PARAM(pDataChannel);
char *pTopicName = NULL,*pStrAnswer = NULL;
uint32_t nAnswerLen = 0;
if (isBinary) {
DLOGI("DataChannel Binary Message");
} else {
DLOGI("DataChannel String Message: %.*s\n", pMessageLen, pMessage);
}
printf("DataChannel String Message: %s \n MessageLen = %d\n", pMessage ,pMessageLen);
dataChannelSend(pDataChannel,isBinary,pStrAnswer,nAnswerLen); // 傳送資料回去
}
VOID onDataChannel(UINT64 customData, PRtcDataChannel pRtcDataChannel){
DLOGI("New DataChannel has been opened %s \n", pRtcDataChannel->name);
printf("pRtcDataChannel->name : %s\n", pRtcDataChannel->name);
dataChannelOnMessage(pRtcDataChannel, customData, onDataChannelMessage); // 接收到資料的回撥函式
}
如果你覺得文章還不錯,可以給個"三連",文章同步到個人微信公眾號[加班猿]
我是hackett,我們下期見