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 脚本简化了库的下载流程。

下载源代码

  1. 进入示例目录:

    cd component/example/kvs_webrtc_v2_mmf
    
  2. 执行 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

  1. component/lwip/api/lwipopts.h 中启用 IPv6 支持:

    #define LWIP_IPV6       1
    
  2. 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

配置示例

  1. 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"
    
  2. 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 凭证进行更安全的管理:

  1. 参考以下资源:

  2. 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"
    

编译项目

  1. 执行以下命令编译 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
    
  2. 使用烧录工具将固件下载至 AmebaPro2 并重启。

  3. 通过串口终端使用以下指令配置 Wi-Fi 连接:

    ATW0=<WiFi_SSID>     : 设置要连接的 WiFi AP
    ATW1=<WiFi_Password> : 设置 WiFi AP 密码
    ATWC                 : 发起连接
    
  4. 若运行正常,串口终端应显示类似以下的输出:

    [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 测试页面 验证运行结果。测试页面配置如下图所示:

../../_images/test_page_setup.jpg

参考资料

有关 AWS WebRTC V2 功能选项的更多信息,请参考: