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,咱们下期见