当前位置: 首页 > 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/ 这些目录找不到)。
这就会导致报错。

http://www.xdnf.cn/news/979309.html

相关文章:

  • 【AI】模型vs算法(以自动驾驶为例)
  • 基于React Native的HarmonyOS 5.0休闲娱乐类应用开发
  • 多分类性能评估方法
  • 企业级RAG系统架构设计与实现指南(基于Java技术栈)
  • uniapp 腾讯云 COS 访问控制实战(细粒度权限管理)
  • 撤销Git合并操作方法总结
  • 七牛云域名配置与CNAME解析
  • 李沐 《动手学深度学习》 | 实战Kaggle比赛:预测房价
  • 【PhysUnits】17.7 readme.md更新
  • 从代码学习深度强学习 - Dyna-Q 算法 PyTorch版
  • Android Gson工具类
  • 免下载苹果 IPA 文件重签名工具:快速更换应用名称和 BID的教程
  • xcode中project.pbxproj点开为空白问题
  • Linux Swap分区应该禁用吗?深入辨析其作用与性能优化
  • Spring @Qualifier,@Primary
  • 接收rabbitmq消息
  • 记录下three.js学习过程中不理解问题----材质(material)⑤
  • 在前端元素中,点击当前元素,但是却选中其他元素的文字的问题
  • Cesium圆锥渐变色实现:融合顶点着色器、Canvas动态贴图与静态纹理的多方案整合
  • 深度剖析:UI 设计怎样为小程序构建极致轻量体验
  • 在 Windows 上安装和配置 Redis 及可视化工具指南
  • C#接口代码记录
  • 物联网基础概述【一】
  • 容器化部署案例一wordpress
  • 递归法解N叉树的后序遍历
  • 若依微服务Openfeign接口调用超时问题
  • Java面向对象编程(OOP)深度学习解析
  • Flutter布局系统全面解析:从基础组件到复杂界面构建
  • ttyd:安全地通过网络共享您的 Linux 终端
  • Cpp 知识3