AWS WebRTC 使用SDK-C demo 实现master推流和viewer拉流

发布于:2025-06-11 ⋅ 阅读:(18) ⋅ 点赞:(0)

上一篇讲了如何安装sdk-c demo环境、构建以及编译,这一篇写一下如何实现master端推流和viewer端拉流。

1、准备master端的ak、sk、session token:

aws密钥来自业务云,根据指定的业务云接口获取,直接使用就可以。我把业务云返回的密钥组,放在shell文件中:

#!/bin/bash

# AWS 临时凭证配置
export AWS_ACCESS_KEY_ID=str1
export AWS_SECRET_ACCESS_KEY=str2
export AWS_SESSION_TOKEN=long_str3
export AWS_DEFAULT_REGION=str4
export AWS_KVS_LOG_LEVEL=1
export DEBUG_LOG_SDP=TRUE
export AWS_ENABLE_FILE_LOGGING=TRUE

echo "✅ Master 环境变量已设置"

2、将上面的shell文件,例如,set_aws_env_master.sh上传到ec2实例上面:

testmanzhang@TestMandeMBP Downloads % scp -i ~/Documents/cert/qa.pem ~/Downloads/set_aws_env_master.sh ec2-user@70.xxx.165.xxx:/home/ec2-user/kvs-webrtc-sdk
set_aws_env_master.sh                         100%  962    13.4KB/s   00:00 

 3、上传成功后修改文件权限:

chmod +x set_aws_env_master.sh

4、执行sh文件:

[ec2-user@ip-10-xx-0-xxx kvs-webrtc-sdk]$ source set_aws_env_master.sh 
✅ Master 环境变量已设置

5、验证环境变量是否设置生效:

echo $AWS_ACCESS_KEY_ID

注:通过上面的方式设置密钥组只针对当前终端生效,如果再启动一个终端,需要再次执行sh。

6、后台启动master:

nohup ./samples/kvsWebrtcClientMaster channel_no > "master_output_$(date +%Y%m%d_%H%M%S).log" 2>&1 &

 6-1、启动之前要进入build目录,不然会报错:

-bash: ./samples/kvsWebrtcClientMaster: No such file or directory

7、查看master进程id:

7-1、jobs -l 用于查找当前终端通过后台&启动的进程:

[ec2-user@ip-10-xx-0-xxx kvs-webrtc-sdk]$ jobs -l
[1]+ 114886 Exit 127                nohup ./samples/kvsWebrtcClientMaster channel no > "master_output_$(date +%Y%m%d_%H%M%S).log" 2>&1

7-2、ps aux | grep kvsWebrtcClientMaster,这个更直观一些:

[ec2-user@ip-10-xx-0-xxx build]$ ps aux | grep kvsWebrtcClientMaster
ec2-user  115130  0.0  0.1 172180  6676 pts/0    Sl   02:56   0:00 ./samples/kvsWebrtcClientMaster lzgd5496a7907243e22d
ec2-user  115129  0.0  0.0 223224  2092 pts/0    S+   02:58   0:00 grep --color=auto kvsWebrtcClientMaster

8、从ec2实例中拉取日志:

testmanzhang@TestMandeMBP Downloads % scp -i ~/Documents/cert/qa.pem ec2-user@70.xxx.165.xxx:/home/ec2-user/kvs-webrtc-sdk/build/master_output_20250610_025651.log ./
master_output_20250610_025651.log             100%   85KB 105.8KB/s   00:00  

9、通过日志查看master进入了推流状态:

2025-06-10 02:57:22.660 DEBUG   lwsWssCallbackRoutine(): Client is writable
2025-06-10 02:57:22.680 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 9
2025-06-10 02:57:22.680 INFO    lwsWssCallbackRoutine(): WSS callback with reason 9
2025-06-10 02:57:27.603 VERBOSE signalingClientGetCurrentState(): Signaling Client Get Current State
2025-06-10 02:57:27.603 VERBOSE signalingClientGetCurrentState(): Current state: 0x0000000000000100
2025-06-10 02:57:32.603 VERBOSE signalingClientGetCurrentState(): Signaling Client Get Current State
2025-06-10 02:57:32.603 VERBOSE signalingClientGetCurrentState(): Current state: 0x0000000000000100
2025-06-10 02:57:32.680 VERBOSE lwsWssCallbackRoutine(): WSS callback with reason 10

10、准备viewer端的ak、sk、session token:

从业务云指定接口获取,也是采用sh的方式存储和执行(参考前面的1-5步)。

11、后台启动viewer:

nohup ./samples/kvsWebrtcClientViewer channel_no > "view1_output_$(date +%Y%m%d_%H%M%S).log" 2>&1 &

12、查看viewer端日志,viewer端收到流了:

2025-06-10 03:24:01.754 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 139985014205056, Size: 160, Flags 3388975000
2025-06-10 03:24:01.774 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 139985014205056, Size: 160, Flags 3388975000
2025-06-10 03:24:01.774 VERBOSE sampleVideoFrameHandler(): Video Frame received. TrackId: 139985014205056, Size: 4458, Flags 3388975000
2025-06-10 03:24:01.795 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 139985014205056, Size: 160, Flags 3388975000
2025-06-10 03:24:01.814 VERBOSE sampleVideoFrameHandler(): Video Frame received. TrackId: 139985014205056, Size: 263, Flags 3388975000
2025-06-10 03:24:01.815 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 139985014205056, Size: 160, Flags 3388975000
2025-06-10 03:24:01.836 VERBOSE sampleAudioFrameHandler(): Audio Frame received. TrackId: 139985014205056, Size: 160, Flags 3388975000
2025-06-10 03:24:01.854 VERBOSE sampleVideoFrameHandler(): Video Frame received. TrackId: 139985014205056, Size: 314, Flags 3388975000