Amazon KVS WebRTC V2
概述
Amazon KVS WebRTC V2(kvs_webrtc_v2_mmf)是基于 FreeRTOS WebRTC 参考实现 的 KVS WebRTC 更新版本。相较于旧版本,V2 同时支持 mbedtls-2.16.6 与 mbedtls-3.0.0,并通过 fetch 脚本简化了库的下载流程。
下载源代码
进入示例目录:
cd component/example/kvs_webrtc_v2_mmf
执行 fetch 脚本以下载所需库:
./fetch_aws_lib.sh
库文件将被下载至
project/realtek_amebapro2_v0_example/src/amazon_kvs/lib_amazon_v2/libraries。
设置 mbedtls 版本
KVS WebRTC V2 支持 mbedtls-2.16.6 或 mbedtls-3.0.0。在 project/realtek_amebapro2_v0_example/GCC-RELEASE/config.cmake 中设置版本:
set(mbedtls "mbedtls-2.16.6")
或
set(mbedtls "mbedtls-3.0.0")
修改 lwipopts.h
在
component/lwip/api/lwipopts.h中启用 IPv6 支持:#define LWIP_IPV6 1在
component/lwip/api/lwipopts.h中启用 Amazon common:#ifndef ENABLE_AMAZON_COMMON #define ENABLE_AMAZON_COMMON #endif
修改 mbedtls_config.h(仅限 mbedtls-3.0.0)
若使用 mbedtls-3.0.0,需修改 mbedtls-3.0.0/include/mbedtls/mbedtls_config.h:
#define MBEDTLS_FS_IO
配置示例
在
component/example/kvs_webrtc_v2_mmf/webrtc_v2_src/demo_config/demo_config.h中配置 AWS 密钥和信道名称:/* Enter your AWS KVS key here */ #define AWS_ACCESS_KEY_ID "xxxxxxxxxx" #define AWS_SECRET_ACCESS_KEY "xxxxxxxxxx" /* Setting your signaling channel name */ #define AWS_KVS_CHANNEL_NAME "xxxxxxxxxx"
在
component/example/kvs_webrtc_v2_mmf/example_kvs_webrtc_v2_mmf.c中配置视频参数:#define V1_RESOLUTION VIDEO_HD #define V1_FPS 30 #define V1_GOP 30 #define V1_BPS 1024*1024
选择摄像头传感器
确认摄像头传感器型号,并在 <AmebaPro2_SDK>/project/realtek_amebapro2_v0_example/inc/sensor.h 中进行定义:
#define USE_SENSOR SENSOR_GC2053
使用 AWS IoT 凭证(可选)
如需使用 AWS IoT Thing 凭证进行更安全的管理:
参考以下资源:
在
component/example/kvs_webrtc_v2_mmf/webrtc_v2_src/demo_config/demo_config.h中配置 AWS 凭证证书:#define AWS_CREDENTIALS_ENDPOINT "xxxxxxxxxx" #define AWS_IOT_THING_NAME "xxxxxxxxxx" #define AWS_IOT_THING_ROLE_ALIAS "xxxxxxxxxx" #define AWS_IOT_THING_CERT "xxxxxxxxxx" #define AWS_IOT_THING_PRIVATE_KEY "xxxxxxxxxx"
编译项目
执行以下命令编译
kvs_webrtc_v2_mmf示例固件:cd project/realtek_amebapro2_v0_example/GCC-RELEASE mkdir build cd build cmake .. -G"Unix Makefiles" -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake -DEXAMPLE=kvs_webrtc_v2_mmf cmake --build . --target flash -j4
使用烧录工具将固件下载至 AmebaPro2 并重启。
通过串口终端使用以下指令配置 Wi-Fi 连接:
ATW0=<WiFi_SSID> : 设置要连接的 WiFi AP ATW1=<WiFi_Password> : 设置 WiFi AP 密码 ATWC : 发起连接
若运行正常,串口终端应显示类似以下的输出:
[INFO][kvs_webrtc_: kvs_webrtc_v2_main_thread: 140] [KVS WebRTC v2 module]: === KVS WebRTC V2 Start === [INFO][MasterTask: Master_Task: 171] Start Master_Task. [INFO][MasterTask: platform_init: 172] waiting get epoch timer [INFO][MasterTask: AppMediaSourcePort_Init: 34] [WebRTC Port] AppMediaSourcePort_Init called. Hardware is ready. [INFO][SigControll: DescribeSignalingChannel: 642] Describing Signaling Channel. [INFO][SigControll: tlsHandshake: 593] (Network connection 0x704b9778) TLS handshake successful. ... [INFO][SigControll: Websocket_Connect: 1641] Successfully connect with WSS endpoint wss://... [INFO][SigControll: OnSignalingConnectionStateChange: 1457] Unblock signaling connection barrier. [INFO][SigControll: SendWebsocketPing: 1267] wss ping ==> [INFO][SigControll: HandleWslayControlMessage: 176] <== wss pong
验证结果
使用 KVS WebRTC 测试页面 验证运行结果。测试页面配置如下图所示:
参考资料
有关 AWS WebRTC V2 功能选项的更多信息,请参考: