笔者对视频压制其实没多少了解,但是最近看着NAS媒体库变得越来越大,硬盘可用容量却越来越少,不免有些空间焦虑
。于是就想着是不是可以把一些普通且体积大的视频压缩一下,少占点空间,以便给高分收藏品挪挪位置。但是呢,笔者又不想在电脑上做这件事,因为得先把NAS上的视频挂载到电脑上才行,不仅要在局域网,而且速度也不大好,总之不优雅吧。于是乎,就找到了这个工具:docker-handrake
,可以跑在NAS上的Docker中,直接就地取材,岂不妙哉!
HandBrake
是一款开源跨平台格式转换工具,可以将视频从几乎任何格式转换为一系列现代、广泛支持的编解码器的工具。而docker-handrake
就是将HandBrake
做成一个Docker镜像,使其能够直接跑在服务器或NAS设备上,存取视频文件更方便,可以在浏览器或任何VNC客户端访问。
当然,如果你需要使用桌面端也没问题,可以在文末获取。
基于Docker部署非常简单,结合Docker Compose是简单之上更便于后续修改和更新,强烈推荐大家使用Docker Compose来管理自己的Docker容器。
1️⃣ 创建compose.yml文件,并将下面内容粘贴进去:
version: '3.9'
services:
handbrake:
image: jlesage/handbrake:latest
container_name: handbrake
restart: unless-stopped
network_mode: bridge
cap_add:
- SYS_NICE
devices:
- /dev/dri
environment:
TZ: Asia/Shanghai
USER_ID: 1000
GROUP_ID: 100
LANG: zh_CN.UTF-8
KEEP_APP_RUNNING: 1
PACKAGES_MIRROR: https://mirrors.aliyun.com/alpine/
CONTAINER_DEBUG: 1
WEB_AUDIO: 1
VNC_PASSWORD: 123456
HANDBRAKE_DEBUG: 1
AUTOMATED_CONVERSION: 0
ENABLE_CJK_FONT: 1
AUTOMATED_CONVERSION_KEEP_SOURCE: 1
AUTOMATED_CONVERSION_OUTPUT_SUBDIR: SAME_AS_SRC
ports:
- '5056:5800'
volumes:
- /share/Container/handbrake/config:/config
- /share/media3/watch:/watch
- /share/media1:/media1
- /share/media2:/media2
- /share/media3:/media3
- /share/media3/transfer:/output
logging:
options:
max-size: "5m"
max-file: "5"
参数说明
映射显卡
如果你的设备有核显或独显,强烈建议设置此项
devices:
- /dev/dri
环境变量
TZ: Asia/Shanghai # 时区
USER_ID: 1000 # 用户ID,请改成自己的
GROUP_ID: 100 # 用户组ID,请改成自己的
LANG: zh_CN.UTF-8 # GUI的语言,这是中文
KEEP_APP_RUNNING: 1 # 是否宕机重启,1=是
PACKAGES_MIRROR: https://mirrors.aliyun.com/alpine/ # 设置软件镜像源
CONTAINER_DEBUG: 1 # 是否开启Debug日志,1=是
WEB_AUDIO: 1 # 是否在GUI中启用声音,1=是
VNC_PASSWORD: 123456 #VNC密码,请自己改
HANDBRAKE_DEBUG: 1 # # 是否启用GUI和调试日志,1=是
AUTOMATED_CONVERSION: 0 # 是否开启自动转换,即只要检测到/watch中有视频就自动转换,0=否
ENABLE_CJK_FONT: 1 # 是否安装WenQuanYi Zen Hei字体,如果不想GUI乱码就安装,1=是
AUTOMATED_CONVERSION_KEEP_SOURCE: 1 # 是否在成功转换完/watch中视频后保留源视频,1=是
AUTOMATED_CONVERSION_OUTPUT_SUBDIR: SAME_AS_SRC # 输出文件夹的子目录,可以填具体目录,填SAME_AS_SRC表示与源视频所在目录相同
映射端口
GUI访问端口,冒号左边可以改成你喜欢的。
ports:
- '5056:5800'
挂载目录
除了/config是系统配置相关的,其他的都是自己视频相关的目录。其中/watch表示自动转换监控目录;/output表示转换后的输出目录。其他的可以不加或加多个,按自己实际情况添加就行。
volumes:
- /share/Container/handbrake/config:/config
- /share/media3/watch:/watch
- /share/media1:/media1
- /share/media2:/media2
- /share/media3:/media3
- /share/media3/transfer:/output
2️⃣ 启动Docker容器
上面的yml文件配置好以后,在ssh中切换到该文件所在目录,执行下面命令,启动HandBrake:
docker compose up -d
如果你使用群晖或威联通,可以使用内置的Docker套件直接部署,方法也很简单,将1️⃣中的内容复制下来,然后打开套件,新建应用程序
,将复制的内容粘贴进去,启动即可。
等待几秒钟,然后在浏览器中打开http://ip:5056
,直接就可以打开HandBrake的GUI,输入上面设置的密码即可。
点击打开源文件
,选择你要开始压缩或转换格式的视频,在上文挂载的目录中选择即可。
记得点Other Locations
->Computer
中去找。
选择好源视频以后,直接可以界面中预览。你可以在界面中的摘要、分辨率、滤镜、视频、音频、字幕、章节、标签等页签下面修改各项参数,也可以直接点右上角的预设
按钮选择一个内置的预设规则。
系统内置的各种预设场景和码率等等。
以上设置好后,点击工具栏上的开始
按钮,就可以开始视频转换了。
在界面底部可以看到转换进度,等到转换完成后就会将新视频保存在输出目录中。
需要特别提示一下,视频转换是非常消耗资源的,如果设备没有核显或独显,就只能使用CPU来硬跑了,这时候CPU的负载会非常高,要有心理准备。
好了,就介绍这么多吧,更多高级玩法还需要好奇的你去探索~~
最后,笔者也整理了桌面版的HandBrake
,需要的话可以在笔者公众号私信【HandBrake】即可快速获取下载链接,打开链接后根据自己的平台下载即可。
原创不易,如果觉得此文对你有帮助,不妨点赞+收藏+关注,你的鼓励是我持续创作的动力!