单机像素流服务接入指南

接入方式:

支持通过通过http的get协议,路径为"./players",返回所有的客户端连接情况

项目启用方式为:通过http的get协议,路径为"./streamer?project=name",请求成功会返回ip、port、name、ready,startedProcess(重复开启相同项目才会有该属性返回)五个参数,请求失败会给出具体原因

关闭当前单机多项目开启的ue进程,路径为"./stopProject"。通常情况下,没有用户连接会自动关闭程序,不需要手动设置。

例如:服务部署在,http://10.18.165.2:8889

  1. 检查像素流服务是否空闲中,空闲后才可以连接
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);
  1. 启动指定名称的引擎进程。
// 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,则代表启动成功,进行下一步,接入像素流。

  1. 连接像素流服务,推流
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