免费开源视频编码软件 Handbrake 使用教学. 超详细 (03/24/2017)

开源免费视频编码软件 Handbrake ,任何人都可以提供建议和修改,是非常好用的视频编码软件,包括用于视频编码 (转码),添加字幕和音频,反隔行,去除噪点 .

官方主页: https://handbrake.fr/
项目地址: https://github.com/HandBrake/HandBrake

0_1488518483455_QQ截图20170303131047.jpg

很多人在使用 Handbrake , 因为其方便好用的特点 . 对普通用户够用的可选功能,熟悉使用很快就可以开始处理视频,相比其他视频处理软件更为简单, 快速 . handbrake 可以处理家用摄影机影片,DVD或BD光盘影片,你录制的游戏视频... 还有更多 . Handbrake 支援多音轨,支援 Intel Quick Sync Video (QSV 快速视频同步) ,可选 X264 , X265 , 支援网络视频优化,或许 Handbrake 是相当好的选择,除了自定义脚本和 avs .

Handbrake 支援 Mac OS , Windows 和 Ubuntu 操作系统,也就是你在大多数主流桌面系统都能使用 .
但是以下内容是 windows 版本的 .

handbrake 有一款衍生产品 : vidcoder , 这得益于 handbrake 的开源许可 . vidcoder 与 handbrake 使用方式大致相同,支持多国语言,包括正繁中文和简体中文 .

要处理的视频信息可以通过 MediaInfo 查看,可以显示非常详细的视频信息,包括视频比特率,帧数,色彩,编码参数,

0_1488537949412_handbrake_03.jpg

首次使用可能需要修改一些设置 ,是否需要更改选择个人喜好有所不同 .

在设置内打开 X264 Advanced 选择,这样使用 X264 编码可以进行更多高级设置 .
连续打开 : ‘Tools > Preferences > General’ , 选定 "Allow use of 'Advanced' Tab for x264 options"
0_1488537402478_QQ截图20170303183538.jpg

Source -- 源文件信息和设置
Title 位置选择导入的第几章视频 .
默认选定 chapters 导出整个视频,可以改为 Seconds 导出选定的时间范围,和 Frames 按照帧速率位置输出 .

Destination -- 输出位置,建议选择一个固定位置来输出视频影片这样比较好找到,能输出 MP4 和 MKV 容器 .

Output settings --输出设置,格式可选择 MP4 和 MKV .
MP4 支援网络播放优化和 iPod 5G 支持 .
MKV 支援 MP4 不可用的 theora , VP8 和 VP9 编解码器 .

Picture 设置显示分辨率和截取

选定视频输出分辨率,除了有其他用处例如上传到有比特率或分辨率限制的视频网站,建议不低于 1080 .

Anamorphic -- 更改画面尺寸 .
以下一些选项的具体用处我并不了解,只懂选择的作用 . 如果没问题,我喜欢 None :bbt_cat:
选择 None 可以自由更改宽度和高度,默认锁定保持分辨率宽高比例,取消选定锁定宽高比例会造成画面失真 .
选择 Automatic 可以自由更改宽度和高度并锁定画面比例,不锁定分辨率宽高比例 ,设置时需要注意,小心画面模糊 .
选择 Loose 可以自由更改宽度,宽度和高度比例锁定 ,可能会稍微损失画质.

Modulus -- 调整画面大小,数值只能整除,或许设置 2 (默认)不会出什么问题,有其他需要可以设置更高 .

Cropping -- 画面剪切 ,例如剪切掉影片的黑边 .

0_1488538215199_handbrake_04.jpg

Filters 画面滤镜,用于反交错和降噪

Detelecine -- 反电视残影

Deinterlace -- 反交错 ,用于处理有存在交错现象的隔行视频

Denoise -- 降噪,用于处理视频噪点,但是使用后会降低画面锐度和细节,所以如果真的要降噪不要使用太过强力的等级 .

Deblock -- 视频去块

Grayscale -- 灰度编码,如果你想让画面变成灰白色或许需要这个 .

Rotate -- 旋转,除了视频需要歪着脖子看,不然设置为 0
0_1488797545826_QQ截图20170306185137.jpg

Video 视频编码器和输出质量设置

Video - 编解码器和帧速率设置

Video Codec -- 视频编码器,默认选择 X264 , 兼容度高,使用 CPU 编码,选定 X264 或 X265 都是相当不错的,不过要注意可能一些设备和网站不支援 X265 (Youtube 这种网站当我没说) .

-- 启用 Intel Quick Sync Video (Intel QSV)

启用之前首先要确认你的 CPU 是否支援 Quick Sync Video (视频快速同步技术) . 在使用 PCI-E 显卡后主板 bios 会自动关闭板载 GPU , 要在 BIOS 设置启动 IGPU , 不是所有 BIOS 选项都叫 IGPU , 只要启动 IGPU 就好 . 启用后编码器会增加 Intel (QSV) 选项 .
Setup Intel Quick Sync Video on Desktop PC with PCI-E graphics card

FPS -- 输出视频帧速率,默认为相同源,但是建议查看源视频帧速率做出合适的选择 ,部分视频帧速率不是恒定的 .
Constant Framerate - 播放器对恒定帧速率视频支援是最好的,Adobe PR 支援这种视频,这是默认选择 .
Peak Framerate - 动态帧速率兼容性较差,部分播放器不支持,Adobe PR 同样不支援这种视频 . 如果真的需要动态帧速率就选择这个 .

Quality - 调整质量
质量调整可以使用 RF (恒定质量) 和 Bitrate (平均比特率) 两种编码模式 .

  • 使用 RF 恒定质量可以得到稳定的画面效果,Handbrake 自动调整比特率来满足画面需求,避免画面在复杂阶段突然模糊 .

  • 使用 Bitrate 平均比特率可以更好控制视频文件大小,Handbrake 会输出一个稳定比特率的视频 .
    X264 调整范围 51~0 , 数值越小质量越高 .

RF 0 为无损,不浪费任何细节的处理,但是实际上你会发现输出文件比源文件要大,并且不会比源视频看起来更好 . RF 我建议设置在19~22 ,这是比较适中的设置,如果数值继续提高例如达到 ~25 + 那么画面会看起来很糟糕,丢失很多的细节和质量 .

使用平均比特率一定要设置合适,不要超过太多比特率造成浪费和过少造成画面模糊,一般情况下没有特殊需求不建议使用比特率方式编码视频 . 比特率编码是按 Kbps 计算,1s 比特率分配到一定量的 FPS ,意思是,提升帧速率也要提升比特率 .

0_1488942828958_QQ截图20170308111151.jpg

Optimise Video -

X264 绝对是这里自定义程度最高的和适配性编解码器 . 你也可以选用 Google 的 VP 8 和 VP 9, 这些编解码器只能在 KVM 容器 (格式) 使用 .

  • X264 普通选择设置

Use Advanced Tab instead -- 选用后启动 X264 高级选项,下列设置全部无效 . 这个选择只在 X264 编解码器存在 .

Encoder Preset -- 预设设置,越向右→ 拖动处理精细度越高,但是更慢,具体根据处理性能选择,我觉得 solwer 已经够慢了...

Encoder Tune -- 微调参数我很少用,使用后优先级低于预设设置但是会高于其他参数 .

Fast Decode -- 快速解码会降低质量,但是不容易观察出来 .

Encoder Profile -- 配置文件默认自动,使用后会强制覆盖一些设置参数 . 如果不需要特意兼容某个设备建议使用默认选项 Auto .
Baseline - 基本配置,仅使用 I/P 帧 ,只能使用逐行扫描 (Progressive)视频,仅能适应 CAVLC 编码 .
Main - 主要配置,可以使用 I/P/B 帧,可以使用逐行扫描(Progressive)和隔行扫描/交错(Interlaced) 视频 , 可使用 CAVLC 和 CABAC 编码 .
High - 高配置,可以使用 I/P/B 帧,支援 8x8 内部预测,更好的量化模式,无损视频编码,逐行扫描 (Progressive) 和隔行扫描 (Interlaced),可使用 CAVLC 和 CABAC 编码 .
参考 : H.264 Profile and Level , H.264的類型與等級說明

Encoder Level -- 默认程序自动选择合适的级别,详细请查看 : https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC#Levels
除了你需要强制输出指定级别的视频,否则建议使用默认设置 Auto .

Extra Options -- 在这里可以额外输入编解码器参数 .

0_1488786818770_QQ截图20170306155312.jpg

  • VP8 VP9

(此处暂时不做太多介绍,因为我没有了解...)
目前我只知道 VP9 对我来说太慢了,实在是太慢了...
0_1489034891930_QQ截图20170309124525.jpg

Audio

如果视频有多条音轨可以点击 'Add Track' 得到更多选项,点击 'Add All Remaining Tracks' 添加所有音频轨道 .
音频比特率默认 160 kbps , 最低不建议低于 128 kbps , 过低的音频比特率会听起来音质损失严重,过高的音频比特率可能超过源音频比特率造成浪费,这样音频质量并不会增长 .
声道默认选定立体声,建议保持默认,除了有其他需求 .

输出格式使用 MKV 可以使用 FLAC 无损音频压缩编码 .

0_1489042497344_QQ截图20170309145315.jpg

Subtitles

可以自己制作好的字幕添加在视频或网络下载的字幕添加在影片内 .
(此处以后修改)
0_1489045948551_QQ截图20170309155127.jpg

chapters

(此处省略)

Advanced X264 编解码器高级配置

啊啊啊啊(抽搐中) :az_ohno: 玄学一样的设置 ,有些根本不明白他的区别,因为看不出来 .
当然,这仅仅是我的吐槽,X264 每个参数选择都是起到作用的,至少说大部分主要参数,虽然 X264 有时候会废弃一些参数让它无法被人更改 .

启用 ‘Advanced’ 高级配置页,需要在 Video 页面使用 X264 编解码器并选择 'Use Advanced Tab instead' .

X264 Encoder Options - 编码参数的输入用法与 X264 编码器有些不同,参数间隔使用 ' : '

参数配置过程应该准守 H.264 level 规则 .

Encoding -- 编码参数设置

ref - Reference Frames
控制解码缓冲大小
在准守 Level 4.1 标准情况 1920x1080 最大 ref 4 , 1280x720 最大 ref 9 .

bframes - Maximum B-Frames
设置 B Frames 的最大连续数量,I 帧和 P 帧中的 B 帧最大连续数量由 'bframes' 参数限制 .
数值设置为 2 , 最多 2 个连续的 P 帧可以被 B 帧取代,就像:IBPBBPBPPPB ... PI .

CABAC -
在编码器处理数据有大量数据需要被无损压缩,H.264 提供 CAVLC 和 CABAC 两种压缩方式 . CABAC 虽然速度较慢但是压缩率较好 (10% ~ 30% ) ,CAVLC 压缩率不如 CABAC ,但是处理速度快并且简单有更好的兼容性 .
仅支持配置文件 Baseline 的设备需要禁用 CABAC .
cabac=0 关闭 CABAC
X264 no-cabac 关闭 cabac

8x8 Transform -
8x8 转换非常有效,需要很少的时间可以提升 5% 压缩率,并在压缩比上提供很好的画面质量 .
启用 8x8 转换配置文件为 High , 部分设备可能不支持 .

weightp - Weighted P-Frames
开启后使用明确加权预测 (explicit weighted prediction) ,使用后稍微改善 P 帧压缩率并改善淡入淡出效果 .
仅支持配置文件 Baseline 的设备需要禁用 weightp .

b-pyramid - Pyramidal B-Frames
建立锥状结构的 B 帧,B 帧之间互相参考提高压缩率 .
可以配合最优化 b-adapt 提高压缩率,但是会增加处理时间 .
none - off 不允许 B 帧作为参照帧,只能参照 I P 帧
Normal - 每个 minigop 允许多个B帧作为参考帧
Strict - 严格 Strict , 每个 minigop 只允许一个 B 帧作为参考帧,蓝光编码强制的规范要求

Analysis -- 图像分析

b-adapt - Adaptive B-Frames
B 帧决策算法,X264 有多种算法决策什么位置使用多少 B 帧 . b-adapt 1 快速算法不管指定多少数量 B 帧,所消耗的时间都大致相同,而且快速模式的判断不太优秀 . b-adapt 2 优化算法,虽然判断精确但会消耗更多时间,时间消耗与 B 帧最大数量成正比,与 b-pyramid 配合更为优秀,但是消耗更多的时间 .

0 : 停用
1 : 快速算法,可以考虑搭配 bframes 16 ,因为速度上没有太大区别 .
2 : 优化算法,比较慢的算法,bframes 越多,速度越慢

direct - Adaptive Direct Mode
自适应直接模式,H.264 启用 B 帧时可选择空间或时间两种预测模式,使用 none 彻底停用但是非常不建议 . 默认空间模式在大多数情况下使用较好,时间模式同样很好用,可以使用 auto 来让 X264 自动选择合适的预测模式 .

me - Motion Est Method
全像素(full-pixel)动态侦测模式,控制运动侦测的方式,编码器会侦测每帧像素的移动方向,越好的侦测方式会延长编码时间但是会获得更好的压缩率 .
dia - Diamond 菱形,进行最简单的搜寻方式,检测像素的上下左右的动态向量,选择其中最好的,重新检测直到找不到更好的动态向量为止 .
hex - Hexagon 六边形,六边形模式相比菱形更精确但是没有慢太多的搜寻方式,适合普通情况视频编码 .
umh - Uneven Multi-Hexagon 非均匀多六边形搜寻,明显比 hex 要慢,但它进行复杂多六边形搜寻避免遗漏难以找到的动态向量,适合画面更为复杂的影片 .
esa - Exhaustive 全局搜寻,在 merange 范围内动态智能搜寻,相比 umh 运行缓慢 ,不太适合普通情况的编码 .
tesa - Transformed Exhaustive 变换全局搜寻,相比 esa 更为精确,但是更慢 .

subme - Subpixel Motion Est
设置子像素预估复杂度,能让侦测精度超越像素级别并改善压缩效率 . 1~5 级控制子像素细分 (refinement) 强度,6级开始决策启用 RDO ,8 级为动态向量和内部预测模式启用 RDO ,使用 RDO 的侦测级别明显慢于没有 RDO 的级别 . 不建议 subme 使用过低的级别,至少 6 级或更高,这样可以得到更好侦测质量 .

0 SAD, no usbpel -
1 SAD, Qpel - 全像素块进行动态搜索,对每个块再用快速模式进行 1/4 像素块精确搜索
2 SATD, Qpel - 半像素块进行动态搜索,对每个块再用快速模式进行 1/4 像素块精确搜索
3 SATD, multi-qpel - 半像素块进行动态搜索,对每个块再用质量模式进行多重 1/4 像素块精确搜索
4 SATD, qpel no all - 快速 1/4 像素块精确搜索
5 SATD, multi-qpel on all - 质量模式 1/4 像素块精确搜索
6 RD in I/P-frames - 启用 RD 进行 I, P 帧像素块的速率失真最优化
7 RD in all frames - 启用 RD 进行全部帧像素块的速率失真最优化
8 RD refine in I/P-frames - RD 细化进行 I , P 帧运动矢量及块内部的速率失真最优化
9 RD refinement on all frames - RD 细化进行全部帧运动矢量及块内部的速率失真最优化
10 QPRD in all frames - 启用 QPRD 对每个块进行四分之一像素块精确搜索及块内部的速率失真最优化 . 需要 Trellis=2,AQ-Mode > 0
11 Full RD - 禁止提前终止分析

merange - Motion Est Range
动态侦测范围,默认指数 16 适合绝大多数影片,包括 HD高清或画面速度快的动作片 .
me 侦测为 hex 和 dia 模式设置范围只能在 4 和 16,更为精确的 umh , esa 和 tesa 模式设置极限可以达到 64,大多数情况下不需要设置达到 64 ,那太慢了并且在大多数情况下没有必要 .

aq-strength - Adaptive Quant Strength
自适应量化器强度,设定 aq 偏向低细节 (平滑) 的宏区块的强度 .
Handbrake 可以滑动的范围在 0.0~2.0 之间 ,实际上 X264 可以设置超过 2.0 但是非常没有必要 .
aq-strength 设置过高出现边缘粗糙,设置过低会出现色带 ,具体需要根据画面类别来判断 .
一般常用设置在 0.7 ~ 1.2 ,静态画面使用更高的参数是更好的选择,动态较多的影片例如动作电影可以考虑 1.0 或更低 .
简单来说,是让画面边缘与细节质量更好,还是画面平滑区域(例如黑暗区域)质量更好,可以使用 Handbrake 不同设置输出一小段画面来查看质量,找到一个较为适合的值 .
参数配合 aq-mode

psy-rd - Psy-RDO - Rate Distortion
心理视觉算法强度,调整信噪比区分细节与噪声以保留更多细节,让画面看起来更好 . (实际上有些玄学我解释不清楚)
过低的比特率限制可以尝试把这个选项调低或关闭 .

psy-rd - Psy-Trellis - Psychovisual Trelis
心理视觉网格,尝试保持更好的画面清晰度以及保留更多细节,但是目前处于实验阶段,默认关闭,合理指数设置 0.1~0.2 .

no-dct-decimate - No-DCT-Decimate
默认情况 DCT Decimation 会丢弃认为多余的数据区块,加快编码速度和工作效率,但是会降低一些细节,例如精细的画面颗粒与抖动效果,可能会损失保留的良好噪点,如果遇到问题或想保留更多细节,可以勾选这个选择 .

deblock - Deblocking
去区块滤波器
调整范围在 -6 ~ 6 之间,官方建议在 -3 ~ 3 内调节
更小的数值可以更好的保留细节,0:0 以上更大的数值能让画面看起来更干净和柔和 .
前者数值控制去块器强度,后者控制去块的边缘范围 . 数值越大去块越强,但是也会损失细节 .

0_149048263950_QQ截图20170309163030.jpg

以下是部分没有在 Handbrake 可选的设置但是可以添加的 X264 参数,因为这些参数大多数情况下不需要特意更改 .
而且下面的参数我都很少用,具体的效果我也不太了解呢,介绍主要是收集文章的参考而来的 :az_pinkcontent:

aq-mode
自适应量化器模式,
0 - 不使用 AQ .
1 - 启用 AQ 重新分配位到影片和帧 .
2 - 自动变化 ( Auto-variance )AQ,会尝试对每帧调整强度 .

qcomp -
量化器曲线压缩参数,默认数值 0.6 , 0 代表固定码率,1 代表固定量化指数,数值越高比特率波动越大 .
(如果没记错是这样)

rc-lookahead -
设置用于宏块树码率控制 (MacroBlock-Tree Ratecontrol , mb-tree) 可用帧的数量,默认 40 . 最大可以设置 250 .
调大数值会带来更好的结果但是也更慢,建议使用 40 ~ 50 之间 .

或许很有用的参考:
https://www.nmm-hd.org/doc/X264設定
http://www.chaneru.com/Roku/HLS/X264_Settings.htm
http://forum.doom9.org/archive/index.php/t-163852.html

03/24 -

:bbt_cat: 这篇教学修改终于完成了,之前有太多的错误解释和错别字,而且内容歪:bubble_spray: 之前版本解释错了很多参数,不知道坑了多少人,因为我发完就没看过,也没有再用过这个软件,并没人提醒我... 导致错误了很长时间

本次修改完成,对于普通视频处理用户应该够用的使用指导,希望对刚刚使用的用户有用吧 .

顺便我后悔之前没有一层一层的来写,这样可以在上面写目录,现在变的好难看,在一个页面很难找到自己想找的 .

最后由 BlueBlue_Master 编辑

@ArturiaPendragon (ノ)゚Д゚(ヽ) 这已经在大佬很简单,并且感觉我在班门弄斧...我还是noob
(ノ๑` ´๑)ノ︵⌨

最后由 BlueBlue_Master 编辑

@白色公羊 如果你想录制游戏视频,就会需要它来处理了:az_pinkcontent: 你不会像那么大的屏幕录影在硬盘内

:az_ohno: 之前这个文章有太多错误,简直错的不能再错,而且没人提醒我,我几乎忘记我发过这个贴子,直到最近在谷歌搜寻一些东西居然找到这个贴,才发现有很多错误然后更改 . 真是抱歉

这次重新描述功能选项的用处和使用选择,屏幕截图全部替换,更改全部的参数介绍,(其实是完全重新写,之前实在是糟糕)

并且把大多数推荐选择或参数都删掉了,部分推荐很误导人,不同的影片有不同合适的处理参数,所以我就删掉了很多推荐,但是也保留了一些 .

最后由 BlueBlue_Master 编辑

探究的好仔细,不过很多预设的配置直接用还好

是呀,过去给B站极限压缩用的,现在随便了23333