handbrake web 视频分布式集群转码
创建目录
sudo mkdir -p /data/handbrake/data
sudo mkdir -p /data/handbrake/media #媒资文件目录
sudo chmod -R 777 /data/handbrake/media #授权 ,若多work节点 需使用nfs共享文件路径保证路径一直
创建compose.yml
services:
handbrake-server:
image: ghcr.io/thenickoftime/handbrake-web-server:latest
container_name: handbrake-web-server
user: 1000:1000 # 修改为你系统的 UID:GID
ports:
- "9999:9999" # Web 界面端口
volumes:
- /data/handbrake/data:/data
- /data/handbrake/media:/video # 媒体文件路径
handbrake-worker:
image: ghcr.io/thenickoftime/handbrake-web-worker:latest
container_name: handbrake-web-worker
user: 1000:1000 # 修改为你系统的 UID:GID
environment:
- WORKER_ID=worker-1 # 唯一标识
- SERVER_URL=10.10.0.64 # 服务器地址
- SERVER_PORT=9999 # 服务器端口
volumes:
- /data/handbrake/media:/video # 必须和服务器路径一致
depends_on:
- handbrake-server
修改启动后生成的config 文件 max-concurrent-jobs: 1 表示单个word 每次只执行一个任务 防止串行触发bug
cat config.yaml
config:
version: 2
paths:
media-path: /video
input-path: /video/input
output-path: /video/output
presets:
show-default-presets: true
allow-preset-creator: false
application:
queue-startup-behavior: 1
update-check-interval: 1
max-concurrent-jobs: 1
配置自监控路径规则 正则匹配 .*\.(mp4|mkv|avi|mov|wmv|m4v|mpg|mpeg|ts)$

下载使用一下面代码可以实现优化
1、nfs 共享路径任意节点上传能触发watcher 转码
2、成功转码输出视频保留源路径
3、优化多节点抢转码bug
4、优化节点有残留的Finished 导致空闲中未被调用
https://files.cnblogs.com/files/blogs/776379/server.js?t=1785994223&download=true
sudo docker cp server.js handbrake-web-server:/handbrake-web/server/server.js
dockert compose restart handbrake-server
需要永久保存可生成新镜像
docker commit handbrake-web-server handbrake-web-server-new

浙公网安备 33010602011771号