当前位置: 首页 > news >正文

避坑:启动sdk-c demo master需要注意的事情

这两天在写shell脚本,想通过shell脚本启动master,在调试的时候报错:

2025-06-11 06:37:14.740 INFO    main(): [KVS Master] Finished setting handlers
2025-06-11 06:37:14.740 ERROR   main(): [KVS Master] Terminated with status code 0x00000009
2025-06-11 06:37:14.740 INFO    main(): [KVS Master] Cleaning up....
2025-06-11 06:37:14.740 ERROR   main(): [KVS Master] signalingClientGetMetrics() operation returned status code: 0x00000001
2025-06-11 06:37:14.740 VERBOSE freeSignalingClient(): Freeing Signaling Client
2025-06-11 06:37:14.740 PROFILE createRtcCertificate(): [Certificate creation time] Time taken: 0 ms
2025-06-11 06:37:14.740 VERBOSE pregenerateCertTimerCallback(): New certificate has been pre-generated and added to the queue
2025-06-11 06:37:14.740 INFO    main(): [KVS Master] Cleanup done

错误code说明:

0x00000009:SERVICE_CALL_NOT_AUTHORIZED
0x00000001:STATUS_INTERNAL_ERROR
说明传入的 ak/sk/token 没有权限去访问指定的 KVS Signaling Channel(频道)。即:
拿到的 token 有效,但不具备访问该频道的权限。

所以刚开始就把查找问题的方向放在了密钥上,修改了设置密钥的方式,由开始的:

  export AWS_ACCESS_KEY_ID="$ak"export AWS_SECRET_ACCESS_KEY="$sk"export AWS_SESSION_TOKEN="$token"export AWS_DEFAULT_REGION="cn-xxx-x"export AWS_KVS_LOG_LEVEL=1export DEBUG_LOG_SDP=TRUE

修改为:

AWS_ACCESS_KEY_ID="$ak" AWS_SECRET_ACCESS_KEY="$sk" AWS_SESSION_TOKEN="$token" \
AWS_DEFAULT_REGION="cn-xxx-x" AWS_KVS_LOG_LEVEL=1 DEBUG_LOG_SDP=TRUE \
nohup ./build/samples/kvsWebrtcClientMaster "$CHANNEL" > "$LOG_FILE" 2>&1 &

不行,启动master时依然报错。

后来以为从接口获取到的密钥不对,经过再三确认,密钥确实是通过业务云获取到的拉流端的密钥,密钥没问题。

检查了channel也没有问题。

一时间不知道该如何解决了。

这时想通过手动启动master再试一下,于是手动请求了业务云接口,填写了ak、sk、token,但启动命令是在项目根目录执行:

[ec2-user@ip-10-xx-0-xxx kvs-webrtc-sdk]$ nohup ./build/samples/kvsWebrtcClientMaster 123d5496a790712345678 > "./log/master/output_$(date +%Y%m%d_%H%M%S).log" 2>&1 &
[1] 166884

启动后报错,错误信息同上。

难道跟启动,目录有关?

重新手动获取密钥,之后进入build目录,再次启动:

[ec2-user@ip-10-xx-0-xxx build]$ nohup ./samples/kvsWebrtcClientMaster 123d5496123472412345 > "output_$(date +%Y%m%d_%H%M%S).log" 2>&1 &
[1] 167229

这次启动成功!

【所以结论是】

启动master需要在build目录下。

对于 amazon-kinesis-video-streams-webrtc-sdk-c 项目,某些组件(比如 kvsWebrtcClientMaster)依赖于在 build/ 目录下启动,否则会因为找不到资源或库路径而启动失败,报错 status code 0x00000009

【原因分析】

相对路径依赖:
SDK 的可执行文件 kvsWebrtcClientMaster 是通过 CMake 构建生成的,在运行时依赖一些相对路径资源或库文件(如证书、配置文件、库路径、插件等)。
如果从项目根目录运行:

./build/samples/kvsWebrtcClientMaster "$CHANNEL"

虽然执行文件路径正确,但它的当前工作目录是根目录,导致它运行时的相对路径指向了错误的地方(比如 certs/、kvslog/、config/ 这些目录找不到)。
这就会导致报错。

相关文章:

  • 技术栈CMake的介绍和使用
  • 如何设计三高架构
  • TiDB 上线步骤是怎么样?怎么做到数据不丢失?怎么保证可靠性?
  • 火山引擎发布豆包大模型 1.6 与视频生成模型 Seedance 1.0 pro
  • cmake 编译grpc
  • Decode Valid Comma Only说明
  • linux引导过程与服务控制
  • 电流传感器在汽车中的应用:从BMS电池管理到电机控制的工程解析
  • day031-Shell自动化编程-数组与案例
  • 使用VirtualBox安装ubuntu22.04虚拟机
  • PHP语法基础篇:变量与数据类型
  • Smartbi双产品线功能更新:主动分析更省心,数据治理更高效
  • seo优化新利器:AI如何让内容批量生成与排名提升双管齐下?
  • 边缘计算如何重塑能源管理?从技术原理到应用场景全解析
  • ldkGUI如何添加自定义的字库
  • Android12 开机后桌面加载框的适配
  • Yakit 热加载入门学习指南
  • 纯血Harmony NETX 5小游戏实践:趣味三消游戏(附源文件)
  • 基于 Spring AI 的 MCP 客户端/服务端实现
  • 前端项目主题切换
  • wordpress模块里加载最新文章/网络推广seo公司
  • 如何建设网站/萝卜建站
  • 谷歌网站统计/查询网站
  • 笔记本做系统哪个网站好/在线外链工具
  • 新余集团网站建设/个人网站设计
  • 怎么设计网站页面/人民日报新闻消息