首先介绍一下这次使用的软件:HandBrake
这是一款开源的全平台的视频压制工具,在windows和linux下都可以运行,并且官方也提供了包含图形界面和vnc的docker镜像。
特点:
①可以以docker形式部署,并且具有完好的图形化操作界面
②可以调用intel的QSV来压制视频,效率相较于纯cpu压制会快一些
③可设定自动压制的文件夹,程序会自动监控文件夹,并且会自动开始压制
部署
1、下载并启用 jlesage/handbrake 镜像
2、开启高权限和cpu限制
开启高权限执行就可以调用核显了,其次资源限制需要吧cpu顺序调到最低,因为转码的时候会直接调用全部的cpu,这样设置可以避免对日常使用造成影响。
3、设定映射文件夹
4、设定端口
5、环境变量设置
这里能够设置的点非常多,具体可以参考官方的说明:
https://github.com/jlesage/docker-handbrake
这里提几个比较关键的设置项目
如果要带字幕进行压制那么就需要设置ENABLE_CJK_FONT=1,来下载字体库,首次启动会自动下载,会稍慢一些。
LANG:设定为zh_CN.UTF-8就可以启用中文了(需要字体库)
AUTOMATED_CONVERSION_PRESET则是对自动压制设定预设的环境变量,可以在容器启动后,在图形界面调整自己想要的参数后,保存为自己设定的预设。再关闭容器将这个环境变量的名字改成自己的预设就行了。
AUTOMATED_CONVERSION_KEEP_SOURCE:推荐自己设定为1,防止程序自动将源文件删除。
AUTOMATED_CONVERSION_OUTPUT_SUBDIR:如果想将输出视频保持原来的文件结构,那么应该设定为SAME_AS_SRC
VNC_PASSWORD:连接到应用程序的 GUI 所需的密码。
软件使用
单个视频压制
一般来说初始的预设Fast 1080p30,是可以保证画质的情况下尽可能压缩体积的设置,如果对画质要求不高可以直接用初始设置。而如果需要调整帧率或者是其他预设的话就需要到视频子窗口进行设置。
1、视频编码器设定
HandBrake支持intel的QSV技术,可以调用核显来辅助编码/解码,可以大大加快编码的速度,推荐优先选用。不过因为是需要调用核显的,所以宿主机本身也要能够使用核显,并且成功映射进容器内,才会出现这几个选项 。
2、其他设置
帧率就可以依照自己的需求设定30/60,固定帧率则是会全程使用恒定帧率输出视频,而峰值帧率则是会分析视频以动态帧率来进一步压缩体积。码率等其他设置基本按照预设就行了。而下面的规格和级别这两者为h264编码的内置预设,一般情况下使用auto就行了
3、滤镜设置
如果源视频有一些问题,比如噪点,则可以调用这块的滤镜进行一定程度的修缮,每个选项都有说明,可以自行参考
4、预设保存
批量视频自动压制
AUTOMATED_CONVERSION | 将此设置为1 启用自动视频转换器,0 禁用它。 | 1 |
AUTOMATED_CONVERSION_PRESET | 自动视频转换器使用的 HandBrake 预设。预设的标识必须遵循格式<CATEGORY>/<PRESET NAME> 。 | General/Very Fast 1080p30 |
AUTOMATED_CONVERSION_FORMAT | 自动视频转换器用于输出文件的视频容器格式。这通常是视频文件扩展名。 | mp4 |
这个容器有一个内置的自动视频转换器。这对于在没有用户交互的情况下批量转换视频很有用。
基本上,复制到/watch
容器文件夹的文件会根据预定义的预设由 HandBrake 自动转换为预定义的视频格式。
自动视频转换器的所有配置参数都是通过环境变量定义的。有关可用变量列表,请参阅 环境变量部分。名称以开头的 AUTOMATED_CONVERSION_
适用于自动视频转换器。
注意:预设由其类别和名称标识。
注意:所有默认预设以及个性化/自定义预设都可以使用 HandBrake GUI 查看和编辑。
注意:默认情况下,转换后的视频存储在/output
容器的文件夹中。
注意:自动视频转换器执行的转换的状态和进度可以从 GUI 和容器的日志中看到。容器的日志可以通过执行命令获取 docker logs handbrake
,其中handbrake
是容器的名称。此外,有关转换的完整详细信息存储在/config/log/hb/conversion.log
(容器路径)中。
多个监视文件夹
如果需要,可以使用额外的监视文件夹:
/watch2
/watch3
/watch4
/watch5
这对于需要通过不同预设转换视频的场景很有用。例如,可以将一个观看文件夹用于电影,将另一个观看文件夹用于电视节目,两者都有不同的编码质量要求。
默认情况下,其他监视文件夹继承与主要设置相同的设置 ( /watch
)。可以通过将其索引添加到相应的环境变量名称来覆盖特定监视文件夹的设置。
例如,要设置用于转换视频的 HandBrake 预设,使用 /watch2
环境变量。用于,等等。AUTOMATED_CONVERSION_PRESET_2
AUTOMATED_CONVERSION_PRESET_3
/watch3
AUTOMATED_CONVERSION_
可以为每个额外的监视文件夹覆盖与自动视频转换器相关的所有设置(名称前缀为环境变量)。
自动视频转换器处理的监视文件夹的最大数量由环境变量定义AUTOMATED_CONVERSION_MAX_WATCH_FOLDERS
。
注意:每个额外的监视文件夹都必须通过在创建容器期间添加卷映射来映射到主机上的文件夹。
注意:通过环境变量定义的每个输出文件夹AUTOMATED_CONVERSION_OUTPUT_DIR
必须通过在创建容器期间添加卷映射来映射到主机上的文件夹。
视频
自动视频转换器支持以下格式的视频:
- ISO 映像文件。
- 包含该文件夹的 DVD 视频光盘文件夹
VIDEO_TS
。 - 包含蓝光视频光盘文件夹的
BDMV
文件夹。
请注意,文件夹名称区分大小写。例如,video_ts
,Video_Ts
或Bdmv
不会被视为光盘,而是被视为普通目录。
当源是光盘文件夹时,转换后的视频文件的名称将与其文件夹之一匹配。例如,/watch/MyMovie/VIDEO_TS
将生成一个名称为MyMovie.mp4
.
视频光盘可以有多个标题(主要电影、预览、额外内容等)。在这种情况下,每个标题都被转换成它自己的文件。这些文件具有后缀.title-XX
,其中XX
是标题编号。例如,如果文件 MyMovie.iso
有 2 个标题,将生成以下文件:
MyMovie.title-1.mp4
MyMovie.title-2.mp4
可以忽略短于特定时间的标题。默认情况下,仅处理超过 10 秒的标题。可以通过环境变量调整此持续时间AUTOMATED_CONVERSION_SOURCE_MIN_DURATION
。有关设置环境变量的详细信息,请参阅环境变量部分。
临时转换目录
正在转换的视频写入输出目录根目录下的隐藏临时目录(/output
默认情况下)。转换成功终止后,视频文件将移动到其最终位置。
此功能对于输出文件夹由另一个应用程序监视的情况非常有用:通过适当的配置,可以确保此应用程序仅“看到”最终的、转换后的视频文件,而不是瞬态版本。
如果监控应用程序忽略隐藏目录,则不需要任何特殊操作,应用程序应该始终看到最终文件。
但是,如果监控应用程序处理隐藏目录,则应将自动视频转换器配置为将 AUTOMATED_CONVERSION_OUTPUT_SUBDIR
环境变量设置为子目录。然后可以将应用程序配置为监视此子目录。例如,如果AUTOMATED_CONVERSION_OUTPUT_SUBDIR
设置为 TV Shows
并/output
映射到/home/user/appvolumes/HandBrake
主机上,/home/user/appvolumes/HandBrake/TV Shows
则应由应用程序监控。
评论(0)