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

发布于:2025-06-28 ⋅ 阅读:(16) ⋅ 点赞:(0)


前面总结了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/bash

set -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[@]}"; do
  sts_curl_args+=( --data-urlencode "sn[]=$sn" )
done

sts_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[@]}"; do
  for i in $(seq 1 "$VIEWERS_PER_CHANNEL"); do
    echo "$channel $i" >> "$TASK_FILE"
  done
done

# ==== 启动 viewer 的函数 ====

网站公告

今日签到

点亮在社区的每一天
去签到