亚马逊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

完成以下步骤:

  1. 安装 cmake:

    • 在 macOS 上运行 brew install cmake pkg-config srtp
    • 在 Ubuntu 上运行 sudo apt-get install pkg-config cmake libcap2 libcap-dev
  2. 获取您要用于本演示的 AWS 账户的访问密钥和秘密密钥。
  3. 运行以下命令在您下载的 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的时候有可能会失败,被墙了,最好自备梯子
  4. 现在,您已经在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应用程序,要完成以下步骤:

  1. 使用 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>
  2. 通过将您要向信令通道提供的名称传递给示例应用程序来运行任一应用程序。应用程序使用您提供的名称创建信令通道。例如,要创建一个名为 myChannel 的信令通道并开始通过该通道发送示例 H264/Opus 帧,请运行以下命令:

    ./kvsWebrtcClientMaster myChannel

    当命令行应用程序打印 Connection established 时,您可以继续下一步。

  3. 现在您的信令通道已创建,并且连接的主设备正在将媒体流式传输到它,您可以查看此流。例如,您可以在 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,我们下期见

记录一下生活的点滴,工作上遇到的问题以及学习上的各类笔记

47 声望
11 粉丝
0 条评论
推荐阅读
音视频技术栈思维导图
分享一张音视频技术栈思维导图,希望对即将入行音视频开发领域的同学有帮助。

加班猿阅读 454

打造高性能计算工作负载强力“引擎”——看亚马逊云科技芯再升级!
“2022年12月,在拉斯维加斯举办的2022亚马逊云科技 re:Invent 全球大会完美落幕,5场主题论坛和数百场涵盖领导力、技术、行业、合作伙伴的分论坛以及丰富的技术应用展示,行业前沿技术,又明晰了诸多行业未来发展...

思否编辑部3阅读 21.8k

C 程序眼中的 Unicode
去年写了一篇文章「在 C 程序中处理 UTF-8 字符串」,介绍了如何使用 GLib 提供的 UTF-8 字符串处理函数来实现基本的 UTF-8 文本处理。不过,GLib 是一个功能比较全面的 C 程序库,C 字符串处理仅仅是它的一个很...

garfileo3阅读 5.8k评论 5

无服务器的又一个里程碑,看亚马逊云科技 Serverless 的创新演进
“2022 年 12 月,在拉斯维加斯举办的 2022 亚马逊云科技 re:Invent 全球大会完美落幕,5 场主题论坛和数百场涵盖领导力、技术、行业、合作伙伴的分论坛以及丰富的技术应用展示,行业前沿技术,又明晰了诸多行业未...

思否编辑部3阅读 24k

滚蛋吧,正则表达式!
你是不是也有这样的操作,比如你需要使用「电子邮箱正则表达式」,首先想到的就是直接百度上搜索一个,然后采用 CV 大法神奇地接入到你的代码中?

良许3阅读 1.4k

亮点回顾|2022 re:Invent Recap:创新源动力——深度学习技术洞察与实践
2022 年 12 月 30 日,由 SegmentFault 思否社区联合亚马逊云科技共同举办的“2022 re:Invent Recap:创新源动力——深度学习技术洞察与实践”线上沙龙活动圆满落幕。

思否编辑部3阅读 9.6k

程序员适合创业吗?
大家好,我是良许。从去年 12 月开始,我已经在视频号、抖音等主流视频平台上连续更新视频到现在,并得到了不错的评价。每个视频都花了很多时间精力用心制作,欢迎大家关注哦~考虑到有些小伙伴没有看过我的视频,...

良许3阅读 1.2k

记录一下生活的点滴,工作上遇到的问题以及学习上的各类笔记

47 声望
11 粉丝
宣传栏