跳转到内容

Ffdshow/参考

来自 Wikibooks,开放世界中的开放书籍

ffdshow 是一款 DirectShow 滤镜,旨在使用 DirectShow 和视频窗口 (VfW) 接口对视频进行编码和解码。它最初由一位名为 Milan 的人创建和维护,但他于 2006 年初消失了。在那之后,ffdshow tryouts 诞生了,继承了 ffdshow 的火炬,并一直致力于改进 ffdshow。

ffdshow 由三个主要组件组成。

  • 视频解码器:这可以被认为是 ffdshow 的“核心”。它是 DirectShow 组件,可以将许多不同的视频格式解码为原始视频。此外,它还可以选择性地以多种方式转换视频(锐化、调整大小等)。
  • 音频解码器:先前组件的对应组件,这是一个用于音频的 DirectShow 解码器,还包含大量转换滤镜(通道混音器、均衡器等)。
  • VfW 编解码器:ffdshow VfW 组件既是视频编码器又是解码器,它复制了 DirectShow 解码器的功能,只是它与 VfW 接口配合使用。VfW 接口是一个较旧的系统,通常用于视频处理程序(VirtualDub、Adobe Premiere 等)。除了提供 VfW 解码之外,它还是各种格式的 VfW 编码器。

视频解码器

[编辑 | 编辑源代码]

编解码器页面

[编辑 | 编辑源代码]
文件:Ffdshow video codecs.gif

编解码器页面允许您控制 ffdshow 将解码哪些格式。解码器列允许您为列出的每个格式选择解码器,您可以选择“禁用”以阻止 ffdshow 解码它。请务必阅读备注,并非所有解码器都已完全实现。

提示与技巧

  • 如果右键单击列表中的任意位置,则可以通过一键启用所有稳定的解码器。这不会启用原始视频处理。
  • 最后一个项目(用于原始视频)在您希望 ffdshow 处理来自另一个流的解码视频时很有用。启用此功能的一个副作用是 ffdshow 将插入或多或少的所有流中。您可以仅为一个颜色空间或全部启用解码。
  • 某些项目在您选择它们时会在列表下方显示其他复选框。这些框将以某种方式更改解码器的行为。
  • h264:如果选中“在安全时跳过去块”,解码器将不会始终将循环内去块滤镜应用于显示的帧,这将减少 CPU 使用率。如果选中“始终跳过去块”,解码器将永远不会应用循环内去块器。请注意,循环内去块器是 h264 解码的正常部分,禁用它(尤其是在低质量流上)会产生次优图像。
  • MPEG1/2:MPEG1 和 MPEG2 都包含一个设置“使用加速技巧”。此设置将减少解码的 CPU 使用率,但会产生较低质量的图像。使用 MPEG2 解码,您还可以启用 DVD 解码,这将允许 ffdshow 解码 DVD 视频。可以认为它是实验性的,但稳定的。
  • 原始视频:运行 Vista?如果要在 WMP11 中将 ffdshow 用作原始视频的直通,则必须选中“在 Vista WMP11 中启用”复选框。

信息与调试

[编辑 | 编辑源代码]
文件:Ffdshow video info.gif

此页面允许您设置少量杂项选项,并且还提供有关当前正在处理的流的统计信息(如果存在)。

设置

  • 您可以在此页面上更改解码器的滤镜优先级。滤镜优先级或多或少是 ffdshow 与其他滤镜相比的优先级。如果多个滤镜可以解码文件,则将使用优先级最高的滤镜。
  • 如果选中“不在以下程序中使用 ffdshow”框,则可以指定 ffdshow 将拒绝从中运行的可执行文件列表。这仅影响视频解码器。音频解码器必须单独配置。Vfw 编解码器没有此功能。

提示与技巧

  • 只有当您正在查看当前正在处理视频的 ffdshow 实例的配置面板时,统计信息才会显示。由于可以同时运行多个 ffdshow 副本,因此您不能仅仅从任何地方打开 ffdshow 并获取所需特定流的信息。如果您在媒体播放器中使用 ffdshow,则必须从相关媒体播放器中打开配置面板才能显示流统计信息。在媒体播放器中,这通常在右键单击视频 -> 滤镜中可用。当流正在播放并且您已启用托盘图标(默认情况下已启用)时,您也可以双击该图标(文件:Ffdshow icon.gif)也是如此。
  • “平均比特率”信息是从您打开 ffdshow 窗口时开始计算的。如果您在动作场景的中间打开窗口,看到意外的高比特率,请不要感到惊讶。

调整大小与纵横比

[编辑 | 编辑源代码]
调整大小与纵横比对话框
调整大小与纵横比对话框

本节基于 ffdshow-tryouts rev 1103 或更高版本。早期版本(或原始 ffdshow)会有一些细微和不那么细微的差异。
该对话框由三个协同工作的部分组成

  • 调整大小,定义基本输出分辨率,
  • 纵横比,限制输出分辨率以满足纵横比限制,以及
  • 条件激活,根据原始分辨率启用或禁用调整大小。

调整大小

文件:Radiobox.gif指定水平和垂直尺寸
  • “不进行纵横比校正”选中:拉伸或缩小到指定的尺寸。
  • “保持原始纵横比”选中:拉伸或缩小,直到宽度或高度使用原始纵横比接触到指定的尺寸。如有必要,将添加黑色边框。
  • 手动配置:拉伸或缩小,直到宽度或高度使用指定的纵横比接触到指定的尺寸。如有必要,将添加黑色边框。
文件:Radiobox.gif指定水平尺寸
高度将自动计算以保持原始纵横比。
  • “不进行纵横比校正”和“保持原始纵横比”给出相同的结果。
  • 手动配置:您可以手动指定纵横比。
文件:Radiobox.gif指定纵横比
高度根据宽度计算。(我们这里称之为。)
  • 不进行纵横比校正:拉伸以填充框。
  • 保持原始纵横比:拉伸或缩小,直到宽度或高度使用原始纵横比接触到框。如有必要,将添加黑色边框。
  • 手动:拉伸或缩小,直到宽度或高度使用指定的纵横比接触到框。如有必要,将添加黑色边框。
文件:Radiobox.gif扩展到下一个的倍数
  • 宽度和高度都扩展到指定值的下一个倍数。例如,如果指定 100,则 320x160 变成 400x200。当 ffdshow 连接到不使用 16 的倍数的宽度或高度的滤镜时,您可能希望使用此模式。
  • “保持原始纵横比”和“手动”在此模式下也适用。
文件:Radiobox.gif乘以
  • 使用指定的放大倍率拉伸宽度和高度。
内部处理像素纵横比
  • 如果选中(默认选中),则调整大小以考虑像素纵横比 (SAR),并将输出 SAR 固定为 1:1。
  • 如果未选中,则输出 SAR 等于输入 SAR,并且视频渲染器(或任何下游滤镜)处理它。

纵横比

File:Radiobox.gif不进行纵横比校正
  • 输出纵横比 (DAR) 不会受原始 DAR 的影响。
File:Radiobox.gif保持原始纵横比
  • 输出 DAR 将与输入 DAR 相同。
File:Radiobox.gif手动
  • 手动指定输出 DAR。
  • 叠加层纵横比:如果您的计算机的叠加层没有 1:1 的 SAR(即,您的显示器具有非正方形像素),您可以使用此滑块进行校正。

条件激活

File:Radiobox.gif如果...则调整大小
  • 仅当输入分辨率与指定的条件匹配时才调整大小。通过单击<>符号以及符号,您可以指定调整大小过滤器将触发的条件。如果条件不满足,则调整大小过滤器将不会激活。
File:Radiobox.gif如果像素数为...
  • 您可以根据每个输入帧中的像素数指定调整大小过滤器触发的条件。您可以单击大于小于符号以交换条件类型。您可以通过将宽度乘以高度来确定帧中的像素数。

示例以下情况:您有一个分辨率为 1280x720 的投影仪,并且您想播放 DVD,其像素纵横比 (也称为 SAR) 在播放过程中会发生变化。为了获得最佳的调整大小系统

  • 指定水平和垂直大小"->1280x720。
  • 选择“保持原始纵横比”。
  • 确保选中“内部处理像素纵横比”。

您会发现视频将始终调整为尽可能大的分辨率,同时保持纵横比正确。

官方 ffdshow-tryouts 网站上提供了关于此过滤器的页面。

文件:Ffdshow 视频输出.gif

输出页面允许您控制 ffdshow 使用的输出格式。上半部分允许您控制允许的输出色彩空间,而下半部分用于各种输出设置。

色彩空间

此页面允许您设置 ffdshow 使用的默认输出色彩空间和格式。可以使用两种通用色彩空间,并且每种色彩空间中都有多种格式。

  • YUV 色彩空间
默认输出色彩空间。在维基百科文章中阅读有关 YUV 的更多信息。由于 YUV 色彩空间(尤其是 YV12)是视频压缩的首选色彩空间,因此将 ffdshow 设置为输出 YV12 可以避免它对解码图像进行任何色彩空间转换,从而加快解码速度。
ffdshow 支持多种不同的 YUV 输出格式。
  • I420/IYUV:类似于下面描述的 YV12,但硬件支持较少。不建议使用,即使您的显卡支持它,因为 YV12 更快。使用每像素 12 位 (bpp)。
  • YV12:几乎始终是最快的输出模式(视频编解码器通常使用 YV12 进行存储)。大多数系统设置的推荐输出,尽管某些旧的/板载显卡不支持它 - 如果您的情况是这样,请尝试 YUY2。Windows Media Player 有时难以处理 YV12 输出。使用 12bpp。
注意 Nvidia 8800 用户!在许多情况下以及当前可用的大多数驱动程序版本(2007 年)中,YV12 输出似乎已损坏。如果您遇到任何类型的图像损坏问题,请尝试回退到 YUY2。
  • YUY2:由 MJPEG 和某些 MPEG2 视频流使用,并且比 YV12 具有略微更丰富的色彩定义。输出速度略低于 YV12,但通常不会慢很多。如果您的输入视频为 YUY2,或者您的显卡不支持 YV12,则这是推荐的输出。使用 16bpp。
  • YVYU & UYVY:罕见且未使用,避免使用。使用 12bpp。
  • NV12:另一种罕见的输出格式,甚至许多显卡都不支持。使用 12bpp。
  • RGB 色彩空间

这些模式使用更传统且更熟悉的 RGB 色彩格式。在维基百科(同样)上了解有关 RGB 的信息。RGB 输出速度较慢,但可能比 YUV 输出更准确 - 无论如何,差异将很小。

支持的 RGB 格式。
  • RGB32 & RGB24:这些模式将为您提供相同的图像输出,唯一的区别是 RGB32 打包为 32 位,通常更容易操作。这些模式分别使用 32 或 24bpp。
  • RGB16 & RGB15:与上述相同,但只有 16/15 位。除非您知道这是一个好主意,否则 RGB15 不是一个好主意。这些分别使用 16 或 15bpp。
  • 高质量 YV12 到 RGB 转换:因为(几乎)所有视频文件都以 YUV 格式(通常为 YV12)压缩,所以 ffdshow 在输出 RGB 模式时必须从 YUV 色彩系统转换为 RGB 色彩系统。此复选框将指示它使用速度较慢但质量更高的转换方法。如果您打算截取屏幕截图,或者真的非常需要每一点忠实的质量再现,请启用此选项。

选择最接近的匹配色彩空间

  • 选中:将自动选择最接近输入流色彩空间的色彩空间。
  • 未选中:将按照对话框中列出的顺序尝试色彩空间。

File:Checkbox semi.gif在输出媒体类型中设置像素纵横比/使用叠加层混合器

  • 未选中:使用经典连接方法。
  • 选中:使用高级连接方法,在与下一个滤镜(通常是视频渲染器)连接时包含像素纵横比 (SAR) 和隔行信息。
  • 不确定/灰色:首先尝试高级连接方法,如果失败则回退到经典连接方法。这是默认设置,除非您有一些特殊用途,否则不应更改。

File:Checkbox empty.gif在输出媒体类型中设置隔行标志/硬件隔行消除

  • 将从输入流或 ffdshow 的内部解码器获得的与隔行相关的信
  • 某些滤镜(如视频渲染器)将使用此信息在必要时对视频进行隔行消除。
  • 这仅用于通知下游滤镜 - 实际结果将完全取决于这些滤镜的实现。
  • 默认情况下未选中。DVD 被标记为隔行扫描,但在大多数情况下,它们最初是电影(逐行扫描),只是进行了隔行转换。对于此类视频,建议保持未选中状态。

提示与技巧

  • 您可以选择多个输出格式,ffdshow 将尝试使用最接近输入的输出格式。通常这意味着 YV12,但并非总是如此。
  • 除非您知道它们是什么,否则不应更改页面上的其他设置。作者建议使用右侧图像中的设置(尽管启用了 YV12)。翻转视频偶尔对损坏或旧的流有用。

音频解码器

[编辑 | 编辑源代码]

音频解码器与视频解码器有很多相似之处。因此,此处将不介绍某些页面,而您可以简单地参考视频解码器的信息。这些页面包括

  • 编解码器:唯一更改的是支持的格式,并且有三个带复选框的项目
  • AC3:复选框启用动态范围压缩,它是普通 AC3 解码器的一部分。除非您有充分的理由,否则不建议您禁用它。
  • DTS:动态范围压缩的复选框与上述相同。第二个复选框“检查 WAV 中的 DTS”用于告诉 ffdshow 检查 .wav 文件并查看它们内部是否确实包含 DTS 音频。您可以从超级音频 CD 和 DVD 音频光盘中获取这些文件。

  • Vorbis:启用 VorbisGain 会告诉 ffdshow 读取可能写入 Vorbis 码流的建议增益设置,并在存在时应用它。使用取决于用户偏好,您可以将其视为一种“音量均衡”形式。
  • 信息与调试:除了为当前播放的流提供不同的信息外,其他方面都相同。

混音器

[编辑 | 编辑源代码]
文件:Ffdshow audio mixer.gif

此页面控制混音器滤镜,该滤镜可以更改正在处理的音频流的声道数。其主要用途是混合所有音频流,使其与您的音频设置具有相同数量的声道。增加声道数称为向上混音,减少称为向下混音。

有两种方法可以定义输出声道的数量:使用配置预设或手动指定矩阵。请注意,ffdshow 最多可以输出 6 个声道(即 5.1)。配置预设最常用且推荐的预设以全尺寸显示,其他预设以较小的字体显示。请注意使用的声道定义(2/0、3/2 等)指的是前置扬声器/后置扬声器

  • 1/0 - 单声道
  • 2/0 - 立体声:如果您有两台扬声器连接到您的电脑,这就是您想要的预设。
  • 3/0 - 3 前置
  • 2/1 - 环绕声
  • 3/1 - 环绕声
  • 2/2 - 四声道
  • 3/2 - 5 声道:如果您有 5 个扬声器连接到您的电脑,您几乎肯定想要此设置。
  • 杜比环绕声/ProLogic:如果您将音频输出发送到仅支持立体声输入但处理 ProLogic/ProLogic II 的放大器,您可能想要使用此预设或下一个预设。
  • 杜比ProLogic II
  • 与输入相同:不进行混音。
  • 耳机虚拟空间化:可以使 >2 声道音频通过耳机听起来更好,也可能使它听起来更差;通常使 2 声道音频听起来更差。
  • 头部相关传递函数
文件:Ffdshow audio output.gif

此页面的设计与视频解码器的页面相同,但实际内容不同。

设置

  • 支持的输出采样格式:此处的复选框设置视频解码器将使用的允许输出格式。
  • 16/24/32/32float:这些是普通的 PCM 输出,具有不同级别的位深。几乎所有遇到的音频流的“正常”速率为 16 位(用于 CD、DVD、大多数 HDVD/BD),但在某些设置中使用更大的位深可能更有利。如果您正在使用任何音频滤镜,则可以帮助增加位深以产生更准确的“舍入”。在此处增加位深时有两个重要的注意事项
  • 在不同的音频位深之间转换是一种有损转换,它不会提高高于原始音频的音频质量。将 16 位 CD 输出为 32 位没有任何意义,您不会发现声音有任何改善。
  • 许多声卡无法正确支持 16 位以外的位深。特别是,许多 Creative 声卡会在将其发送到扬声器之前将 24/32/32float 输出重新采样回 16 位,这意味着您最终只会将音频通过多个破坏性过程处理而没有获得任何好处。
  • AC3:此模式会将音频编码为 AC3,然后通过 SPDIF 输出(如果音频已经是 AC3,则不会重新编码)。如果您想通过连接到 SPDIF 兼容放大器的扬声器播放音频,请考虑使用此选项。使用您的连接可以支持的最高比特率以获得最大质量。
  • LPCM:如帮助文本所说:“LPCM 输出旨在连接到 DVD 音频解码器滤镜,例如来自 Cyberlink 的滤镜。” 仅此而已。
  • 连接到在您想要尝试强制音频输出发送到特定位置时很有用。通常,DirectSound 是默认的且首选的输出,但在某些情况下您可能想要使用其他输出。
华夏公益教科书