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

AWS WebRTC:通过shell实现多进程启动viewer


前面总结了aws webrtc sdk-c项目中多进程启动master的shell脚本,具体参考:https://blog.csdn.net/zhang_jiamin/article/details/148616899

这次总结一下多进程启动viewer的shell脚本,以及过程中遇到的问题和解决方法。

实现说明:

1、获取 sid 和 uid(用于认证)
2、获取 ak/sk/token(多个 SN 共用一组密钥)
3、为每个 channel 启动 5 个 viewer,启动命令包含日志文件
4、使用 GNU parallel 控制并发(替代 wait + 手动计数)
5、所有错误集中到 error.log

首先,需要安装parallel,请参考:https://blog.csdn.net/zhang_jiamin/article/details/148815820

主要模块代码实现:

#!/bin/bashset -euo pipefail# ==== 登录获取 sid uid ====
login_response=$(curl -ks "$LOGIN_URL" \-H "Content-Type: application/x-www-form-urlencoded" \-H "GG-Pid: xxxxxxx" \-H "GG-Sign: xxxxxxxxxxxxxx" \-H "GG-Imei: xxxxxxxxxxxxxxx" \--data-urlencode "countryAbbr=CN" \--data-urlencode "countryCode=86" \--data-urlencode "email=${EMAIL}" \--data-urlencode "password=${PASSWORD}" \--data-urlencode "region=${REGION}" \--data-urlencode "type=1"
)sid=$(echo "$login_response" | jq -r '.data.sid')
uid=$(echo "$login_response" | jq -r '.data.uid')# ==== 获取 STS 密钥 ====
sts_curl_args=(-k -s "$STS_URL"-H "Content-Type: application/x-www-form-urlencoded"-H "GG-Sid: $sid"-H "GG-Uid: $uid"-H "GG-Pid: xxxxxxx"-H "GG-Sign: xxxxxxxxx"-H "GG-Imei: xxxxxxxxxxxx"--data-urlencode "refresh=true"
)for sn in "${SNS[@]}"; dosts_curl_args+=( --data-urlencode "sn[]=$sn" )
donests_response=$(curl "${sts_curl_args[@]}")ak=$(echo "$sts_response" | jq -r '.data.ak')
sk=$(echo "$sts_response" | jq -r '.data.sk')
token=$(echo "$sts_response" | jq -r '.data.token')# ==== 构造任务列表 ====
TASK_FILE="${BASE_DIR}/viewer_tasks.txt"
: > "$TASK_FILE"for channel in "${CHANNELS[@]}"; dofor i in $(seq 1 "$VIEWERS_PER_CHANNEL"); doecho "$channel $i" >> "$TASK_FILE"done
done# ==== 启动 viewer 的函数 ====
http://www.lqws.cn/news/520039.html

相关文章:

  • Object.assign()
  • 获取YARN application 应用列表的几种方法
  • 2025年Java后端最新面试场景题 + 八股文高频面试题
  • Dagster数据管道构建指南:I/O管理与数据库连接实践
  • React Native【实战范例】账号管理(含转换分组列表数据的封装,分组折叠的实现,账号的增删改查,表单校验等)
  • rules写成动态
  • syncthing忘记密码怎么办(Mac版)?
  • 成都芯谷金融中心·文化科技园打造文化科技高地
  • 微服务思想与C++服务化框架
  • 跟着AI学习C#之项目实践Day7
  • sentinel 自定义 dashboard 用户名密码
  • 第⼀个与⼤模型交互的应⽤
  • Swagger 在 Spring Boot 中的详细使用指南
  • thinkphp8之文件上传
  • 用户体验驱动的3D设计:从功能实现到情感共鸣的设计升级
  • 融合聚类与分类的退役锂电智能分选技术:助力新能源汽车产业可持续发展
  • JVM调优实战 Day 6:JVM性能监控工具实战
  • 数据结构 顺序表与链表
  • python的易家宜超市云购物系统
  • webman 利用tcp 做服务端 对接物联网
  • 使用 Spread.net将 Excel 中的文本拆分为多段
  • 注解+AOP+自动配置实现自定义starter
  • Java8 Stream流:Stream流的思想和获取Stream流
  • 深入浅出:RocketMQ与Kafka的双剑合璧,实现高可用与高吞吐
  • 服务器不支持PUT,DELETE 的解决方案
  • python爬虫框架scrapy学习记录
  • 打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体
  • 量学云讲堂2025朱永海慢牛开启第58期视频课程
  • 卡萨帝发布AI深度科技:实现从守护生活到守护文明的升级
  • Linux系统之Nginx反向代理与缓存