当前位置: 首页 > news >正文

开源视频转码器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包含需要应用程序访问的主机文件

在这里插入图片描述

端口

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

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
58035800

默认暴露了 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 开启硬件加速编码

# 新建文件夹 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 文件

version: '3'services:handbrake:image: jlesage/handbrakecontainer_name: handbrakerestart: unless-stoppedports:- 5803:5800volumes:- ./config:/config:rw- ./output:/output:rw \- ./storage:/storage:ro \- ./watch:/watch:rw \

然后执行下面的命令

# 新建文件夹 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)

在这里插入图片描述

将字体放到容器内即可

# 从群晖拷贝到容器内
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

相关文章:

  • Godot自定义控件样式语法解析
  • Java数据类型(八种基本数据类型 + 四种引用类型)、数据类型转换
  • 机器学习:模型评估和模型保存
  • 【软考】设计模式之访问者模式
  • Redis的主从搭建
  • Linux笔记--GCC
  • 全新2.0版本极其抽象的门(Spring Security)
  • Unity RectTransform·屏幕坐标转换
  • 【研发日记】Matlab/Simulink技能解锁(三)——在Stateflow编辑窗口Debug
  • 2024目前三种有效加速国内Github
  • 算法修炼-动态规划之路径问题(1)
  • 代码随想录算法训练营第四十六天 139.单词拆分、多重背包(了解)、 背包总结
  • 类与对象的实践----日期相关函数的实现
  • 【硬件相关】IB网/以太网基础介绍及部署实践
  • cartographer ceres后端优化
  • ES6指北【2】—— 箭头函数
  • [译] 怎样写一个基础的编译器
  • Golang-长连接-状态推送
  • Js基础——数据类型之Null和Undefined
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • PaddlePaddle-GitHub的正确打开姿势
  • PermissionScope Swift4 兼容问题
  • Redash本地开发环境搭建
  • socket.io+express实现聊天室的思考(三)
  • spring cloud gateway 源码解析(4)跨域问题处理
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 服务器从安装到部署全过程(二)
  • 后端_ThinkPHP5
  • 那些被忽略的 JavaScript 数组方法细节
  • 前端攻城师
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 用Visual Studio开发以太坊智能合约
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 【干货分享】dos命令大全
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (floyd+补集) poj 3275
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (六)Hibernate的二级缓存
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (转)菜鸟学数据库(三)——存储过程
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .net 使用ajax控件后如何调用前端脚本
  • .NET 中创建支持集合初始化器的类型
  • .net实现头像缩放截取功能 -----转载自accp教程网