当前位置: 首页 > Linux

AmazonAWSKinesisVideoStreamswithWebRTCdemoexample

时间:2023-04-06 01:51:24 Linux

标题:AmazonAWSKinesisVideoStreamswithWebRTCdemoexample分类:[LinuxC]标签:[AmazonCloudPlatform]日期:2021/12/22作者:hackett微信公众号:加班下面的分步说明介绍了如何下载、构建和运行KinesisVideoStreamswithWebRTCSDK及其相应示例。1.在C中下载KinesisVideoStreamswithWebRTC开发套件并运行以下命令:gitclone--recursivehttps://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c.git2.编译要使用WebRTC构建KinesisVideoStreams,请完成以下步骤:安装cmake:在macOS上运行brewinstallcmakepkg-configsrtp在Ubuntu上运行sudoapt-getinstallpkg-configcmakelibcap2libcap-dev获取您要使用的AWS对于这个演示帐户的访问密钥和秘密密钥。运行以下命令在下载的WebRTCCSDK中创建构建目录并从中执行cmake:mkdir-pamazon-kinesis-video-streams-webrtc-sdk-c/buildcdamazon-kinesis-video-streams-webrtc-sdk-c/buildcmake..//这里cmake可能会失败,被屏蔽了,最好自带梯子现在,你已经在上面步骤刚刚创建的build目录下,运行make来构建WebRTCC开发工具包以及它提供的例子。注意:这些区域是:如果系统没有安装gstreamer,kvsWebrtcClientMasterGstSample将不会构建。为了确保它构建(在macOS上),您必须运行:brewinstallgstreamergst-plugins-basegst-plugins-good3.在C中运行WebRTCSDK示例。在第2步之后,您将找到构建目录如下演示应用程序生成于:kvsWebrtcClientMaster-此应用程序通过信令通道发送示例H264/Opus帧(路径:/samples/h264SampleFrames和/samples/opusSampleFrames)。它还接受传入的音频(如果在浏览器中启用)。在浏览器中勾选时,它会打印终端接收到的音频数据包的元数据。kvsWebrtcClientViewer-此应用程序接受示例H264/Opus帧并打印它们。kvsWebrtcClientMasterGstSample-此应用程序从GStreamer管道发送示例H264/Opus帧。要运行这些演示应用程序,请完成以下步骤:使用AWS账户凭证设置您的环境:(AWS账户凭证需要您自己从账户中获取)exportAWS_ACCESS_KEY_ID=<您的AWS账户访问密钥>exportAWS_SECRET_ACCESS_KEY=exportAWS_KVS_CACERT_PATH=<您的cert.pem文件的完整路径。它通常位于Kinesis-video-webrtc-native-build/certs/cert.pm中的certs目录中>通过将您要提供的名称传递给信号通道提供示例应用程序以运行任一应用程序。该应用程序使用您提供的名称创建信令通道。例如,要创建一个名为myChannel的信令通道并开始通过它发送示例H264/Opus帧,请运行以下命令:./kvsWebrtcClientMastermyChannel当命令行应用程序打印Connectionestablished时,您可以继续下一步。现在您的信号通道已创建并且连接的主控正在向其流式传输媒体,您可以查看流。例如,您可以在Web应用程序中查看此实时流。为此,请使用将KinesisVideoStreams与WebRTC测试页面结合使用中的步骤打开WebRTCSDK测试页面,并使用您在上面为主服务器指定的相同AWS凭证和相同信号通道设置以下值:AccessKeyIDSecret访问密钥信号通道名称客户端ID(可选)选择启动查看器以启动示例H264/Opus帧的实时视频流。您可以选择在网页端/集成了WebRTC的Android和iOSAPP上观看此流。总结:一个信令通道只能有一个主设备。一个信令频道最多可以有10个连接的观众。连接建立后的数据交互:VOIDonDataChannelMessage(UINT64customData,PRtcDataChannelpDataChannel,BOOLisBinary,PBYTEpMessage,UINT32pMessageLen){//ConnectUNUSED_PARAM(customData);UNUSED_PARAM(pDataChannel);char*pTopicName=NULL,*pStrAnswer=NULL;uint32_tnAnswerLen=0;if(isBinary){DLOGI("DataChannel二进制消息");}else{DLOGI("DataChannel字符串消息:%.*s\n",pMessageLen,pMessage);}printf("DataChannel字符串消息:%s\nMessageLen=%d\n",pMessage,pMessageLen);dataChannelSend(pDataChannel,isBinary,pStrAnswer,nAnswerLen);//发回数据}VOIDonDataChannel(UINT64customData,PRtcDataChannelpRtcDataChannel){DLOGI("NewDataChannelhasbeenopened%s\n",pRtcDataChannel->name);printf("pRtcDataChannel->名称:%s\n",pRtcDataChannel->名称);dataChannelOnMessage(pRtcDataChannel,customData,onDataChannelMessage);//接收数据的回调函数}如果你觉得文章还不错,可以给个“三连”,文章会同步到你的个人微信公众号【超时猿】我是hackett,下期见