声网提供服务端媒体推流命令行工具,可以循环推送 3 个视频片段至声网直播频道,用于演示基本的推流功能。
你可以在服务端打开终端,输入命令编译和运行该工具向指定的声网直播频道推流,集成声网 RTC SDK 的客户端可作为接收端加入同一频道,观看推流效果。
请确保满足以下环境要求:
lowUdpPort
和 highUdpPort
参数指定端口范围。SDK 会在指定范围内给每个频道分配端口,并避免端口冲突。如端口冲突,将无法加入频道。请确保接收端(Android、iOS、Windows 或 macOS 平台)已集成声网 RTC SDK(2.3.3 及以上版本)。
声网 Media Streaming Server SDK 支持推送以下类型的 MP4 文件:
声网提供媒体文件用于推流演示,位于 SDK 包 samples/demo/clips 文件夹中。
如你使用自己的媒体文件,请参考使用转码工具,确保文件编码格式满足要求。
点击此处获取声网 Media Streaming Server SDK 包,服务端媒体推流命令行工具位于 samples 目录下。
samples 目录结构如下:
子文件夹名称 | 说明 |
---|---|
/AgoraSDK |
对推流 API 的实现和封装示例,以便在 /demo/main.cpp 中方便地调用。你可以在集成过程中根据实际需求重写 AgoraSDK/mediaStreamingImpl.cpp 文件,也可以在其基础之上复用代码和修改。 |
/base |
基础库实现。 |
/demo |
|
打开终端,进入 SDK 包中 samples/demo 的目录下执行以下命令进行编译。
make
编译成功后,在该目录下会生成一个 mediastreaming_server_demo
可执行程序。
编译完成后,直接在命令行中输入 ./mediastreaming_server_demo
加上必要的参数设置,即可快速开始推流,例如:
./mediastreaming_server_demo --appId ${Your App ID} --channel ${Channle name} --uid 123 --withRecording 0 --withStreaming 1 --clip1MP4 ${path to local mp4 file} --clip2MP4 ${path to local mp4 file} --clip3MP4 ${path to local mp4 file}
其中:
clip1MP4
、clip2MP4
和 clip3MP4
参数用于指定要推流的本地文件路径,目前仅支持 MP4 格式。至少需设置两个。withRecording
设为 0,关闭录制指定频道内其他远端用户的音视频流。withStreaming
设为 1,开启向指定频道内推音视频流。开始推流后如果需要停止推流,直接按 Ctrl + C 终止进程即可。
服务端媒体推流命令行工具还支持一些其他的参数设置,在命令行中运行 ./mediastreaming_server_demo
即可看到该工具支持的所有参数。
下表列出所有参数和说明,你可以根据需要自行设置。
参数 | 类型 | 是否必填 | 描述 |
---|---|---|---|
appId |
String | 必填 | App ID,必须和声网 RTC SDK 的 App ID 一致,可在声网 Console 项目管理页获取。 |
uid |
UInteger32 | 必填 | 用户 ID,32 位无符号整数。 有两种设置方式: |
channel |
String | 必填 | 希望向其推流的直播频道名。 |
nInstance |
Integer32 | 选填 | 推流实例个数,默认为 8,受限于 Linux 句柄和端口能力。 |
clip1MP4 |
String | 选填 | 待推流的本地 MP4 文件 1 的路径。 |
clip2MP4 |
String | 选填 | 待推流的本地 MP4 文件 2 的路径。 |
clip3MP4 |
String | 选填 | 待推流的本地 MP4 文件 3 的路径 |
localVosDomain |
String | 选填 | 用于内网推流。仅用于声网内部测试。 |
channelKey |
String | 选填 | 用于标识推流实例权限的动态密钥。如果声网 RTC SDK 设置了 token,该参数必须设置为 token。 |
isAudioOnly |
Bool | 选填 | 设置是否仅推音频流: |
isVideoOnly |
Bool | 选填 | 设置是否仅推视频流: |
withRecording |
Bool | 必填 | 设置是否录制频道内其他远端用户的音视频流: |
withStreaming |
Bool | 必填 | 设置是否向频道内推音视频流: |
idle |
Integer32 | 选填 | 设置空闲频道超时退出时间,单位为秒,最小值为 3 秒,默认值为 300 秒。如果频道内无用户的状态持续超过该时间,推流实例会自动退出频道。 |
lowUdpPort |
Integer32 | 选填 | 最低 UDP 端口。如不设置,会随机分配一个值。所设置的端口必须为正整数,且最高 UDP 端口与最低 UDP 端口差值不能小于 4。 |
highUdpPort |
Integer32 | 选填 | 最高 UDP 端口。如不设置,会随机分配一个值。所设置的端口必须为正整数,且最高 UDP 端口与最低 UDP 端口差值不能小于 4。 |
logLevel |
Integer32 | 选填 | 设置日志过滤等级,只有等级不高于所设等级的日志才会被生成。默认为 2。 |
perfVerbose |
Bool | 选填 | 设置是否开启性能打印回显: |