单机像素流服务接入指南
接入方式:
支持通过通过http的get协议,路径为"./players",返回所有的客户端连接情况
项目启用方式为:通过http的get协议,路径为"./streamer?project=name",请求成功会返回ip、port、name、ready,startedProcess(重复开启相同项目才会有该属性返回)五个参数,请求失败会给出具体原因
关闭当前单机多项目开启的ue进程,路径为"./stopProject"。通常情况下,没有用户连接会自动关闭程序,不需要手动设置。
例如:服务部署在,http://10.18.165.2:8889
- 检查像素流服务是否空闲中,空闲后才可以连接
const interval = setInterval(() => {
axios.get('http://10.18.165.2:8889/players')
.then(res => {
const { data } = res;
const players = data.players;
if (players.length > 0) {
// 像素流服务使用中,不可以连接
} else {
// 当前空闲状态
}
});
}, 10 * 1000);
- 启动指定名称的引擎进程。
// name 是引擎配置的项目名称,例如:guangdong
axios.get('http://10.18.165.2:8889/streamer?project=' + name);
返回数据格式为
{"ip":"127.0.0.1","port":8872,"name":"ahtc","ready":true}
如果ready为true,则代表启动成功,进行下一步,接入像素流。
- 连接像素流服务,推流
import {CloudRenderEngine} from '@baidu/cloudrenderengine';
// wsUrl是以ws开头,例如像素流服务部署在http://10.18.165.2:8889,那这个值为:ws://10.18.165.2:8889
const wsUrl = 'ws://10.18.165.2:8889';
const engine = new Engine.CloudRenderEngine({
wsUrl: wsUrl, // 重要参数
isShowTestUI: false,
connectOnLoad: true,
shouldShowPlayOverlay: false,
matchViewportResolution: true,
});
// 渲染场景。 此时可以开启一个加载动画
engine.load();
const handleEngineLoaded = () => {
// 执行这个事件后代表资源加载完
// 加载完成才可以使用engine的一系列方法
// 此时可以关闭加载动画
};
const disconnected = () => {
// 服务连接异常时会回调此方法
};
engine.addEventListener('videoInitialised', handleEngineLoaded);
engine.addEventListener('signalingServerError', disconnected);
HTTPS支持
该服务默认是HTTP协议,如果要使用HTTPS协议,步骤如下。
- 修改配置文件(config.json)中的"UseHTTPS": false为"UseHTTPS": true
- 需要在SignallingWebServer/certificates目录下提供SSL证书文件
- 需要准备client-key.pem(私钥)
- 需要准备client-cert.pem(证书)
如果缺失的证书目录
- 当前项目中没有certificates目录
- 需要创建该目录并放入有效的SSL证书文件
然后需要生成再像素流服务根目录下执行命令
mkdir -p SignallingWebServer/certificates
如果有证书的话,就将证书放到这个目录下。
如果没有证书,则可以创建自签名证书,命令如下
openssl req -x509 -newkey rsa:4096 -keyout SignallingWebServer/certificates/client-key.pem -out SignallingWebServer/certificates/client-cert.pem -days 365 -nodes