专门处理云转码上边的图片,自动剪切处理,标准化海报。
关键配置
workspace/recipes/poster.json
{ "recipe": "poster", "settings": { "format": "jpg", "quality": "90", "height": "240", "ratio": "16-9", "resizeStyle": "entropy" } }
设置预处理模块,将图片处理成 16:9 的比例,高度 240PX,并且格式为 jpg,质量为 90%的格式。
系统核心配置
config/config.production.json
{ "server": { "host": "127.0.0.1", "port": 8001 }, "images": { "remote": { "enabled": true, "path": "#" } } }
设置运行端口 8001,设置远程连接 path,比如域名https://video.zhainanyingshi.com
运行效果
比如https://video.zhainanyingshi.com/videos/5bc721ef87af60065e31735e/1.jpg 是云转码上边的图片。 访问http://127.0.0.1:8001/poster/videos/5bc721ef87af60065e31735e/1.jpg 则会直接返回自动处理成 16:9 格式为 jpg 质量为 90%,高度为 240px,智能剪切的图片。 预处理设置的链接为 poster,详见上方 recipes 的配置,可以自行进行更改。
更多用法
https://github.com/dadi/cdn 参考此库。
重要的参数配置
config/config.production.json 运行环境配置文件
缓存设置:
"caching": { "ttl": 3600, "expireAt": "0 5 0 * * *" }
expireAt 配置解释
"0 5 0 * * _" 每天凌晨 12 点 5 分刷新缓存
"0 30 11 _ _ 1-5" 每周星期一到星期五 早上 11 点 30 刷新缓存
"0 15 14 1 _ _" 每个月一号下午 2 点 15 刷新缓存
"0 22 _ _ 1-5" 周一到周五晚上 10 点刷新缓存
"_ 5 4 * * 0" 每周日凌晨 4 点 5 分刷新缓存
ttl 配置解释
单位秒,默认 3600 秒,一个小时缓存失效,可以自行设置时长。
/api/flush 可以通过这个 API 手动刷新缓存文件
image 配置
"images": { "directory": { "enabled": true, "path": "relative/path/to/your/images" }, "remote": { "enabled": true, "path": "https://server1.somedomain.tech/images" }, "s3": { "enabled": true, "accessKey": "your-access-key", "secretKey": "your-secret", "bucketName": "your-bucket", "region": "your-region", "endpoint": "ams3.digitaloceanspaces.com" }
images 配置项 一共有三种用法,一种是直接服务同主机图片,服务本地图片,一种是服务远程图片,最后一种是亚马逊和 Digital Ocean Space 云储存。
directory 服务本地文件,直接指定 path 为文件夹地址即可直接处理本地图片。例如/www/express-ffmpeg/public,然后将图片地址 host 更改为 CDN 地址即可。
remote 服务远程文件,直接设置 path 为远程 url,例如 https://video.zhainanyingshi.com,最后把地址替换成 cdn 地址即可。
s3 云储存,可扩展的云储存,可以直接缓存各种云储存上边的图片。
assets 配置
"assets": { "directory": { "enabled": true, "path": "/Users/absolute/path/to/your/assets" } }
除了把 images 换成 assets,其他用法一样,设置之后会缓存除了 jpg 的各种文件,包括视频文件。
workspace/recipes/recipe.json 配置文件
{ "recipe": "poster", "settings": { "format": "jpg", "quality": "90", "height": "240", "ratio": "16-9", "resizeStyle": "entropy" } }
recipe 文件是预配置格式处理文件,在 workspace/recipes 文件夹中建立。
"recipe"参数设置必须和文件名一致。 settings 中可以设置的选项:
blur 模糊
filter 设置裁剪处理算法
flip 翻动
format 格式
gravity 设置裁剪区域
ratio 比例
rotate 旋转
width 宽度
height 高度
resizeStyle 裁剪模式 推荐 entropy 等,详见 dadi/cdn 文档
设置完成之后,比如 recipe 为 poster,则访问链接为 cdnhost/poster/yourpath/1.jpg
最后是脚本安装:
运行 git clone https://gitee.com/quazero/cdn-manager cd cdn-manager npm install export NODE_ENV=production pm2 start index.js