[机翻文档1]了解ShanaEncoder的H264设置和FFmpeg的x264设置
shanaencoder吧
全部回复
仅看楼主
level 10
天明Tianmi 楼主
[机翻文档1]了解 ShanaEncoder 的 H264 设置和 FFmpeg 的 x264 设置
由于 ShanaEncoder 基于 FFmpeg,因此与 FFmpeg 的命令结构基本兼容。因此,深入了解 FFmpeg 将有助于您更好地使用 ShanaEncoder。
在本文中,我们将研究 ShanaEncoder 中标记为“H264”的 x264 编码设置,并了解如何在 GUI 环境中配置它们,以便用户更轻松地在 FFmpeg 中配置 x264 编码设置。此外,我们还将研究如何使用 FFmpeg 命令配置 ShanaEncoder 编码设置。
文中配置的 H264 命令采用了一种选项设置方法,该方法在不受硬件限制的播放环境中,在一定程度上优先考虑图像质量。与默认值不同的设置(在 FFmpeg 中,x264 的默认值为 medium 预设)标记为红色 ,其他经常处理的选项标记为绿色 。 这只是一种指导原则,而非绝对原则。由于它没有考虑原始部分,因此请记住,在将其应用于实际编码时, 必须反映原始特征(是否隔行扫描、是否需要更改帧速率、是否需要使用滤镜进行校正等)。
1.快速设置(F6)
如果您想获得高质量的结果,请选择“质量”模式。量化器模式会导致明显的比特率波动,因此除非绝对必要,否则请避免选择该模式。质量模式本身是量化器模式的修改版本,针对图像质量进行了优化。
画质一般(相同码率下)Quality Mode (crf) = Bitrate Mode 2pass (2pass) > Bitrate Mode 1pass (abr)。
x264 的 crf (constant rate factor,一种视频质量判定指标)默认值为 23 ,该值越低,质量越高 。
压缩率最高的方法是通过裁剪掉一部分原图(右键⇒设置部分)来找到编码时在画质方面效率最高的 crf 值,但是找到最优 crf 需要花费大量时间,所以编码时通常使用 18 到 22 左右的 crf 值。不建议使用 16 或更低的 crf 值,因为相对于画质来说,这会花费太多时间。
更改帧速率会通过复制或丢弃现有帧来调整帧速率,因此这种通过增加帧数来加倍帧数的方法与流畅运动 (AMD) 或使用滤波来平滑运动的帧倍增等方法不同。由于它不是真正的帧倍增方法, 因此不建议使用此方法来提高帧速率 。
但是,建议将无意义的 60fps 视频(通过不必要地重复帧来增加帧速率而没有任何平滑移动的视频。有些卷轴属于此类)缩小到 30fps。
CFR(恒定帧率)选项用于创建恒定帧率的视频,无论其来源如何。建议在大多数无法识别可变帧率的视频编辑程序中使用该选项进行视频编码编辑。如果未选择此选项,编码器将根据视频编解码器和文件格式自动确定视频是固定帧率还是可变帧率。
如果 ShanaEncoder 中的源是可变帧率,则选择“更改帧率”并将文件编码为 mp4 将导致可变帧率编码(取决于编解码器,但在许多情况下如此)。 (在这种情况下,FFmpeg 将以恒定帧率进行编码。)
由于帧速率波动而导致音频不同步的可能性几乎为零。
“更改关键帧”设置关键帧间隔(以秒为单位)( -shanakeyframe 参数选项适用)。但是,根据编解码器和设置的不同,可能会出现错误。您可以将此设置留空。但是,如果您想减小 GOP 大小,请将其设置为较低的值。这会降低效率(压缩率),但会提高播放过程中的寻道(跳过)性能。
OpenCL 加速是一个选项,允许软件编解码器 x264 通过 OpenCL 利用显卡的部分硬件加速功能,但实际使用情况并不理想,因此请勿选择。(在某些情况下,它可能会导致编码错误。)
对于分辨率高于高清的视频,请选择“High”(高)配置文件,除非您的播放设备有配置文件限制。“High”(高)配置文件会在“Main”(主)配置文件的基础上添加 8x8dct(一种 8x8 宏块的自适应 DCT 变换,可提高压缩效率),以获得更高分辨率的视频。因此,您可以将“Main”(主)配置文件视为高清或更低分辨率,将“High”(高)配置文件视为高清或更高分辨率。(与 ShanaEncoder 不同,除非您有特殊需求,否则无需使用 FFmpeg 命令行选择配置文件。)
然而,有时您可能会看到使用 Main 或 Baseline 配置文件编码的视频,即使是全高清视频。这可能是由于配置错误造成的,也可能是因为配置文件要求较低,以减轻 x264 实时录制时已经超负荷的 CPU 负担。无论如何,如果您担心画质,我们强烈建议您选择“高”。
选择“自动”级别。由于级别与最大带宽相关,因此除非有特殊原因(例如播放器级别限制),否则最简单的方法是选择“自动”。(对于 FFmpeg 命令行,除非确实需要,否则无需设置级别限制。)
预设是一组独特的选项设置,预设为目标压缩率级别 。压缩率(效率)越高,速度越低,因此以速度表示。 在 FFmpeg 中,x264 和 x265 编解码器默认为“中” ,通常,“中”、“慢”和“更慢”比较合适。“非常慢”和“安慰剂”不实用,因为它们耗时过长,与质量相比不理想。
调优是一组值,用于根据原始源适当设置多个独特选项,以达到所需的调优效果。它优先于预设,但优先级低于用户自定义选项。根据源的不同,您可以选择胶片、动画、颗粒(带有噪点的图像,例如老电影)和静态图像。PSNR 和 SSI 是最大化相应图像质量指标的设置。通常情况下,仅使用胶片、动画和颗粒,其余的则不太可能使用。
最好不要启用“快速解码”或“零延迟”。(零延迟是在高延迟限制情况下进行播放编码时使用的选项。)
2.高级设置(=设置 FFmpeg 自身的选项)
在大多数情况下,“快速设置”部分中的预设设置就能产生令人满意的效果。 但是,如果您需要更详细的选项或更高的图像质量(具体取决于来源),请点击“高级设置”进行自定义,如下所示。
需要注意的是,ShanaEncoder 的 H264 高级设置部分假设所有特有选项都已设置,这可能会有点让人不知所措。 在实际配置 FFmpeg 命令行时,实际上可以通过在 -x264-params 选项后仅指定与默认介质预设不同的特有选项来更轻松地应用它 。
(需要注意的是,ShanaEncoder 目前还没有提供 x265 的高级设置菜单,要设置 x265 中特有的选项,需要按 F8 键打开参数窗口,然后将以 -x265-params 开头的选项值直接插入到编码设置部分。)
[框架类型]
去块效应指的是循环内去块效应,这是 H.264 的一项关键功能。可以将其视为一种模糊效果,用于消除伪影。必须选择合适的去块效应才能获得最佳的图像质量。
第一个值决定整个屏幕的模糊强度,第二个值决定边缘的模糊强度。通常使用介于 0(默认值)或 -2 到 2 之间的值。对于细节较多的图像,建议使用较低的值;而对于即使存在一些模糊效果也能获得更清晰的图像,建议使用较高的值。(对于动画,建议使用第二个选项(Beta)的较低值以保留边缘细节。)
CABAC 是一种熵编码算法,它对量化器调整后的数据进行无损压缩。与其他现有方法相比,CABAC 具有更高的压缩效率,因此在 High Profile 及以上版本中始终被选用。
GOP 大小决定了 GOP 大小的最小值和最大值。最小值是关键帧之间的最小间隔,最大值是关键帧之间的最大间隔。降低这些值可以提高图像质量,但由于 I 帧数量增加,数据容量也会增加,从而导致压缩率降低和编码时间延长。我们建议尽可能保持这些值不变。
开放 GOP 是指 GOP 内的 P 帧和 B 帧可以引用 GOP 外的帧。H264 默认关闭所有 GOP。开放 GOP 可以节省更多 P/B 帧的数据,从而提高压缩效率,但会增加播放延迟。(HEVC 默认处于开放状态,这也是 HEVC 播放需要比 H264 播放更强大硬件的原因之一。)
Slice 是编码时切帧的一个值,建议不要动它。
B-frames 是连续 B 帧的最大数量。(默认值为 3)值越高,效率越高(压缩率越高,从而文件大小更小或图像质量更好),但也会增加编码时间。
自适应 B 帧 (b-adapt) 决定如何自适应地应用 B 帧判定方法。默认值为“快速”,但“最佳”可提高效率。(但是,随着 B 帧的最大数量增加,编码速度会降低。)
参考帧是指 P 帧可以参考的前导帧数量。(B 帧的参考帧数量比 P 帧少 1-2 个。)该值越高,压缩率就越高,但编码和解码延迟也就越长(换句话说,需要更大的缓冲区)。默认值为 3。
自适应 I 帧决策(场景切换)是一个值,用于决定 I 帧的创建频率。该值越高,创建的 I 帧(即 GOP)就越多。
其他部分是您不需要触碰的设置。
[速率控制]
与帧/宏块之间的比特率分布相关的设置。
VBV 最大比特率和 VBV 缓冲区大小是用于限制整体比特率的设置,在为硬件缓冲区大小受限的播放器进行编码时设置。
预读帧数 (rc-lookahead) 是指用于确定帧类型的预读帧数。默认值为 40。较大的值可以提高效率,但会增加编码/解码延迟。
MB-Tree 通过更有效地在 MB(宏块,将一个帧或场切割成宽度和高度相等的正方形)的帧之间分配比特率来提高压缩比。
自适应量化 (AQ) 会为屏幕上经常被忽略的平坦区域和暗区分配更多比特,从而增强细节。建议使用“方差”或“自动方差”。最好将“强度”设置为合适的值,通常约为 1 或 2。
[分析]
与分析帧/宏块之间的运动差异相关的设置。
运动估计是至关重要的部分。默认值为十六进制,但我们建议将其更改为 umh,以进一步改进帧间运动估计算法。范围介于默认值 16 到 24 之间,子像素 ME (subme) 值约为默认值 7,因为数值越高,图像质量越好,但速度越慢。
运动矢量预测模式(直接)是直接运动矢量的预测模式。默认为空间模式,但可以设置为自动模式。
对于其他部分,我们建议您保留其默认值。
3. 参数设置窗口中的选项设置结果
完成上述设置后,按 F8 键打开参数窗口,可以看到如下记录信息。
过滤器参数部分显示了 ShanaEncoder 中 FFmpeg 的视频过滤器(第一列)和音频过滤器(第二列)的设置。
在 ShanaEncoder 中,快速设置中设置的音频采样率会由 aresample 滤镜处理,并反映在音频滤镜 (af) 部分。(在 ShanaEncoder 的早期版本中,您必须在快速设置中选择音频部分的“更改采样率”才能应用 aresample 滤镜。这是为了防止某些编解码器在未更改采样率的情况下进行编码并导致错误。从 5.0.0.3 版本开始,只有 GSM、AMRNB 和 AMRWB 音频编解码器需要使用采样率。)
编码设置部分将快速设置中的设置显示为 FFmpeg 命令。它显示除输入和视频/音频滤镜之外的所有 FFmpeg 命令。(“输入”包含文件列表中的文件名,滤镜显示在上方的“滤镜参数”部分中。)
查看内容,您可以看到 ShanaEncoder 如何使用 FFmpeg 命令替换快速设置中的设置。高级设置中的值是只读的,无法编辑,因此您必须使用快速设置。但是,您可以直接插入或编辑其他命令选项或其他元数据。如果您了解 FFmpeg 命令,则可以理解 ShanaEncoder 如何处理任务,并通过添加或修改必要的部分来充分利用 ShanaEncoder。
4. 在 FFmpeg 中应用 x264 设置
如上 ShanaEncoder 中设置的 x264 编码命令,转换为适合在 FFmpeg 中执行的 FFmpeg 命令行如下。(大写字母为实际执行时需要适当修改的部分)
ffmpeg -i INPUT -c:v libx264 -preset medium -crf 23.0 -x264-params deblock=-1,-1:b-adapt=2:aq-
mode=2:merange=24:me=umh:direct=auto -c:a aac -b:a 128k -ac 2 -sn -map_metadata -1 -map_chapters -1 OUTPUT.mp4
请记住以下几点:
跳过视频配置文件、调音和级别设置
设置唯一选项的部分仅适用于与默认值不同的部分。
音频编解码器是 FFmpeg 的内置 AAC,而不是 FDK-AAC(FFmpeg 许可问题)。
如果有其他 ShanaEncoder 的自定义选项,请更改它们以适合 FFmpeg。
现有的 FFmpeg 二进制文件(例如 BtbN 的 FFmpeg 构建版本 )未将 FDK-AAC 包含为音频编解码器,以符合 FFmpeg 的基本许可证 GPL。相反,ShanaEncoder 将 FDK-AAC 设置为默认 AAC 编码器,因此在转换 ShanaEncoder ⇒ FFmpeg 命令行时必须考虑到这一点。
2025年10月24日 13点10分 1
level 10
天明Tianmi 楼主
原文:shana.pe.kr/80578
2025年10月24日 13点10分 2
1