diff --git a/scripts/assets/test-tone.ogg b/scripts/assets/test-tone.ogg new file mode 100644 index 0000000..987924d Binary files /dev/null and b/scripts/assets/test-tone.ogg differ diff --git a/scripts/selftest.sh b/scripts/selftest.sh index 645f5e7..48434db 100755 --- a/scripts/selftest.sh +++ b/scripts/selftest.sh @@ -145,12 +145,14 @@ cleanup_lk lk() { docker run --rm --network host "$LK_CLI_IMAGE" --url "$1" --api-key "$LK_KEY" --api-secret "$LK_SECRET" "${@:2}"; } -docker run -d --name lk-caller --network host "$LK_CLI_IMAGE" \ +# 主叫发布仓库内置的 30 秒 opus 测试音频(--publish-demo 只有视频轨,这里用真实音频) +docker run -d --name lk-caller --network host -v "$PWD/scripts/assets:/data:ro" "$LK_CLI_IMAGE" \ --url "$LK_WS" --api-key "$LK_KEY" --api-secret "$LK_SECRET" \ - room join --identity caller --publish-demo "$ROOM" >/dev/null 2>&1 + room join --identity caller --publish /data/test-tone.ogg "$ROOM" >/dev/null 2>&1 +# 被叫端必须显式开自动订阅(livekit-cli v2 的 --auto-subscribe 默认为 false) docker run -d --name lk-callee --network host "$LK_CLI_IMAGE" \ --url "$LK_WS" --api-key "$LK_KEY" --api-secret "$LK_SECRET" \ - room join --identity callee "$ROOM" >/dev/null 2>&1 + room join --identity callee --auto-subscribe "$ROOM" >/dev/null 2>&1 sleep 10 plist=$(lk "$LK_HTTP" room participants list "$ROOM" 2>&1) @@ -160,16 +162,16 @@ else fail "房间成员不符,list 输出: $(echo "$plist" | head -c 300)" fi -# 主叫发布了媒体轨道(publish-demo 会发布音视频 demo 轨) -if echo "$plist" | grep -qi "MICROPHONE\|AUDIO"; then +# 主叫应已发布音频轨(kind=AUDIO) +if echo "$plist" | grep -qi "AUDIO"; then pass "主叫音频轨道已发布" else note "未从成员列表确认音频轨道(可能输出格式差异),请人工核对: lk room participants list" fi -# 被叫端日志应出现订阅到轨道的记录 -if docker logs lk-callee 2>&1 | grep -qi "track"; then - pass "被叫端已接收到主叫的媒体轨道(一对一语音链路打通)" +# 被叫端日志应出现 track subscribed(媒体链路打通的直接证据) +if docker logs lk-callee 2>&1 | grep -qi "track subscribed"; then + pass "被叫端已订阅到主叫的音频轨道(一对一语音链路打通)" else fail "被叫端日志未见轨道订阅记录: $(docker logs lk-callee 2>&1 | tail -5)" fi