项目介绍
PixiJS WebGl服务端渲染转视频
主机环境依赖
1、标准版的chrome浏览器
2、ffmpeg 音视频处理(下载地址 http://www.ffmpeg.org/download.html)
3、nodejs 18.19.0+
4、redis 5+ 用于保存任务队列
配置 config.js
主要关注以下部分(默认保留配置是按照 mac 开发环境设置的,其余环境按需设置)
1、启用 GPU 硬件加速相关配置,根据实际的 OS,选择开启如下注释
//硬件加速相关配置
//windows
//不用配置
//mac
'--use-gl=egl',
//linux
// '--use-gl=desktop',
// '--ignore-gpu-blacklist',
// '--enable-gpu-rasterization',
// '--enable-features=VaapiVideoDecoder,VaapiVideoEncoder,Prerender2',
2、主机浏览器安装地址设置,根据实际的 OS 及浏览器安装目录,修改配置
//linux
// executablePath: "/opt/google/chrome/chrome",
//windows,具体路径按实际环境设置
// executablePath: "c:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
//mac
executablePath:'/Applications/Google Chrome.app/Contents/MacOS/Google Chrome',
3、配置.env
#1、将.env.example 复制为 .env
$ cp .env.example .env
#2、修改.env的配置信息,重点是如下配置项
#设置渲染的OS系统平台(mac/win/ubuntu/centos),自动根据平台选择config.*.js作为预选配置启动chrome和ffmpeg参数
render.os=win
#chrome浏览器位置,默认在config/config.*.js中有配置
render.executablePath=
#资源域名配置
render.resource=https://cdn.h5ds.com
#redis配置【一定要与server的redis配置一样】
render.redis.host=127.0.0.1
render.redis.port=6379
render.redis.password=
render.redis.db=0
#【文件存储】文件存储系统 (oss-阿里云OSS local-本地存储 cos-腾讯云COS s3-S3 minio-Minio),默认oss
storage.disk=oss
#【文件存储】阿里云OSS配置
storage.oss.accessKeyId=LTAI1i16~
storage.oss.accessKeySecret=KZW1AqsC4~
storage.oss.bucket=h5ds-cdn
storage.oss.cname=true
storage.oss.endpoint=https://cdn.h5ds.com
#腾讯云COS配置
storage.cos.SecretId=
storage.cos.SecretKey=
storage.cos.Bucket=
storage.cos.Region=
#【文件存储】MinIO配置
storage.minio.accessKey=IntJguUOlS9Iu438TZ2z
storage.minio.secretKey=W42kGBLCAnyK0pjv0rB7mFFuLui2K8Y9FoXy83LO
storage.minio.bucket=h5ds
storage.minio.endPoint=localhost
storage.minio.port=9000
storage.minio.useSSL=false
#【文件存储】AWS S3配置
storage.s3.accessKeyId=AKIAUO7P~
storage.s3.secretAccessKey=gTxfs6A0+3lLC4E5RIh0~
storage.s3.region=cn-north-1
storage.s3.bucket=xinfa-test
运行
# 【可选】安装yarn
$ npm install -g yarn
# 安装依赖包
$ yarn install
# 默认端口启动 server,默认监听8000
$ node server.js
# 指定端口启动 server
$ node server.js 8888
使用
通过 api 接口调用服务
接口文档地址:https://console-docs.apipost.cn/preview/8b5f1f33c527f522/2a23b18c8e596003
docker构建与使用
1、设置.env,设置运行环境为linux
render.os=linux
2、构建容器
#删除就容器
$ docker stop xfce
$ docker rm xfce
#构建镜像
$ docker build -t xfce .
#清理TAG<none>镜像
$ docker image prune -f
#测试镜像
$ docker run -d --name xfce -v $pwd/:/www/ -p 3389:3389 -p 6901:6901 -p 8000:8000 xfce
#容器使用说明
https://hub.docker.com/r/soff/ubuntu-xfce-vnc
#浏览器VNC链接
http://localhost:6901/?password=vncpassword
#推送到远端镜像仓库
$ docker tag xfce registry.cn-hangzhou.aliyuncs.com/h5ds/xfce:latest
$ docker push registry.cn-hangzhou.aliyuncs.com/h5ds/xfce:latest
#清理多余的<none>镜像
$ docker image prune -f
处理状态说明
列表api:/api/job/list?types=waiting,active,failed&start=0&end=0 详情api:/api/job/info?id=108
结果:
{
"code": 0,
"message": "success",
"data": {
"id": "108",
"data": {
。。。
},
"progress": "callbacked", //处理状态
}
}
data.progress字段状态说明:
正常处理状态:
待处理
->initing(数据准备中)
->rendering,*%(渲染中,进度)
->downloading(下载webm及音频数据)
->rendered(渲染逻辑完成)
->transcodeing(转码合并音视频中)
->transcoded(转码合并完成)
->putcosing(上传cos中)
->putcosed(上传cos完成)
->callbacking(回调api中)
->callbacked(回调api完成)
异常状态:
rendererror(渲染出错)
transcodeerror(转码合并出错)
putcoserror(上传cos出错)
callbackerror(回调API出错)