开源视频转码器HandBrake

什么是 HandBrake ?

HandBrake 是一款适用于 LinuxMacWindows的开源视频转码器。HandBrake 可以处理大多数常见的视频文件和格式,包括消费者和专业摄像机创建的文件、手机和平板电脑等移动设备的文件、游戏和计算机屏幕录制的文件,以及DVD 和蓝光光盘的文件。HandBrake 利用 FFmpegx264x265等工具从这些源文件创建新的 MP4MKV 视频文件。

什么是 docker-handbrake ?

docker-handbrake 实现了一个用于 HandBrakeDocker 容器。应用程序的图形用户界面可以通过现代的 Web 浏览器访问(客户端无需安装或配置),也可以通过任何 VNC 客户端进行访问。还提供了完全自动化模式:将文件放入监视文件夹中,让 HandBrake 在没有任何用户交互的情况下处理它们。

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 handbrake ,选择第一个 jlesage/handbrake,版本选择 latest

本文写作时, latest 版本对应为 v24.01.2

docker 文件夹中,创建一个新文件夹 handbrake,并在其中建四个子文件夹 configoutputstoragewatch

文件夹 装载路径 说明
docker/handbrake/config /config 存储其配置、状态、日志和任何需要持久性的文件
docker/handbrake/output /output 存储转换后的视频文件
docker/handbrake/watch /watch 存储需要转换的视频文件
docker/handbrake/storage /storage 包含需要应用程序访问的主机文件

端口

本地端口不冲突就行,不确定的话可以用命令查一下

bash 复制代码
# 查看端口占用
netstat -tunlp | grep 端口号
本地端口 容器端口
5803 5800

默认暴露了 2 个端口,其中 5900VNC 连接端口

如果没有 VNC 客户端的话,可以删掉

环境

可变
LANG 默认值为 en_US.UTF-8,改设为 zh_CN.UTF-8
TZ 默认值为 Etc/UTC,改设为 Asia/Shanghai

更多的变量参数及功能介绍,请参考官方文档:https://github.com/jlesage/docker-handbrake#environment-variables

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

如果你的设备支持 Intel Quicksync (QSV),可以增加一行 --device /dev/dri 开启硬件加速编码

bash 复制代码
# 新建文件夹 handbrake 和 子目录
mkdir -p /volume1/docker/handbrake/{config,output,storage,watch}

# 进入 handbrake 目录
cd /volume1/docker/handbrake

# 运行容器
docker run -d \
   --restart unless-stopped \
   --name handbrake \
   -p 5803:5800 \
   -v $(pwd)/config:/config:rw \
   -v $(pwd)/output:/output:rw \
   -v $(pwd)/storage:/storage:ro \
   -v $(pwd)/watch:/watch:rw \
   jlesage/handbrake

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

yaml 复制代码
version: '3'

services:
  handbrake:
    image: jlesage/handbrake
    container_name: handbrake
    restart: unless-stopped
    ports:
      - 5803:5800
    volumes:
      - ./config:/config:rw
      - ./output:/output:rw \
      - ./storage:/storage:ro \
      - ./watch:/watch:rw \

然后执行下面的命令

bash 复制代码
# 新建文件夹 handbrake 和 子目录
mkdir -p /volume1/docker/handbrake/{config,output,storage,watch}

# 进入 handbrake 目录
cd /volume1/docker/handbrake

# 将 docker-compose.yml 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:5803 就能看到主界面

中文界面

如果你配置了环境变量 LANGzh_CN.UTF-8,看到册主界面是👇这样的

这应该是容器里没有中文字体导致的,在网上搜索 Songti.ttc,将下载的字体文件放到 handbrake 目录

Songti.ttc 下载地址:Songti.ttc(https://portrait.gitee.com/ishelo/QQZoneMood/blob/master/Songti.ttc)

将字体放到容器内即可

bash 复制代码
# 从群晖拷贝到容器内
docker cp ./Songti.ttc handbrake:/usr/share/fonts/

## --- 以下几步为验证,可以不需要执行 --- ##
# 进入容器内
docker exec -it --user root handbrake /bin/bash
  
# 扫描字体目录并生成字体信息的缓存
fc-cache -vf
  
# 查看系统内所有中文字体及字体文件的路径
fc-list :lang=zh

必须要重启一次容器

原来的小方框已经可以正常显示了

转码本身是比较耗性能的,如果能使用硬件编解码会有效的降低 CPU 的占用,从官方说明看,HandBrake 支持 Intel Quick Sync Video,只需要将设备/dev/dri暴露在容器中即可。在大多数情况下,HandBrake 是可以成功访问/dev/dri设备的

软件的使用,说简单也简单,说复杂也复杂,不过好在是中文界面,而且网上能找到使用教程,所以这里就不赘述了。

参考文档

HandBrake/HandBrake: HandBrake's main development repository

地址:https://github.com/HandBrake/HandBrake
HandBrake: Open Source Video Transcoder

地址:https://handbrake.fr/
jlesage/docker-handbrake: Docker container for HandBrake

地址:https://github.com/jlesage/docker-handbrake

相关推荐
心动啊1219 小时前
镜像和容器的管理
docker·容器
noravinsc9 小时前
docker compose ps 命令
docker
溜达的大象10 小时前
docker创建一个centOS容器安装软件(以宝塔为例)的详细步骤
运维·docker·容器
powerfulzyh13 小时前
Docker中运行的Chrome崩溃问题解决
chrome·docker·容器
onkel in blog15 小时前
【Docker】Docker Compose方式搭建分布式内存数据库(Redis)集群
数据库·redis·分布式·docker
跪下,大胆刁民15 小时前
CentOS 7 基础环境安装脚本
docker·centos·bash
Kookoos17 小时前
基于 PostgreSQL 的 ABP vNext + ShardingCore 分库分表实战
数据库·docker·postgresql·c#·.net
TianJinZi18 小时前
linux环境安装docker
linux·运维·docker
fie888919 小时前
初识Dockerfile之RUN和WORKDIR
docker
may_一一19 小时前
Docker宿主机IP获取
tcp/ip·docker·容器