Ffdshow/参考
ffdshow 是一个 DirectShow 过滤器,旨在使用 DirectShow 和视频 for windows (VfW) 接口来编码和解码视频。它最初由一位名叫米兰的人创建和维护,但他在 2006 年初消失了。在那之后,ffdshow tryouts 诞生了,继承了 ffdshow 的使命,并且一直在努力改进 ffdshow。
ffdshow 由三个主要组件组成。
- 视频解码器:这可以被认为是 ffdshow 的“核心”。它是 DirectShow 组件,可以将许多不同的视频格式解码为原始视频。此外,它还可以选择性地以多种方式变换视频(锐化、调整大小等)。
- 音频解码器:它是之前组件的对应部分,是一个 DirectShow 音频解码器,还包括大量变换过滤器(通道混合器、均衡器等)。
- VfW 编解码器:ffdshow VfW 组件既是视频编码器又是解码器,它复制了 DirectShow 解码器的功能,只是它与 VfW 接口配合使用。VfW 接口是一个较旧的系统,通常用于视频处理程序(VirtualDub、Adobe Premiere 等)。除了提供 VfW 解码,它还是多种格式的 VfW 编码器。
编解码器页面允许您控制 ffdshow 将解码哪些格式。解码器列将允许您为列出的每个格式选择解码器,您可以选择“禁用”以阻止 ffdshow 解码它。请务必阅读备注,并非所有解码器都已完全实现。
提示和技巧
- 如果您右键单击列表中的任何位置,您可以在一次点击中启用所有稳定的解码器。这不会启用原始视频处理。
- 最后一个项目,用于原始视频,如果您希望 ffdshow 处理来自另一个流的解码视频,则此项目很有用。启用此功能的一个副作用是 ffdshow 将插入到几乎所有流中。您可以选择仅对一个颜色空间或所有颜色空间启用解码。
- 某些项目在您选择它们时会在列表下方显示额外的复选框。这些框将以某些方式更改解码器的行为
- h264:如果您选中“在安全时跳过去块”,解码器将不会始终将循环内去块过滤器应用于显示帧,这将降低 CPU 使用率。如果您选中“始终跳过去块”,解码器将永远不会应用循环内去块器。请注意,循环内去块器是 h264 解码的正常部分,禁用它(尤其是在低质量流上)将导致图像质量不佳。
- MPEG1/2:MPEG1 和 MPEG2 都包含一个设置“使用加速技巧”。此设置将减少解码的 CPU 使用率,但会产生更低质量的图像。使用 MPEG2 解码,您还可以启用 DVD 解码,这将允许 ffdshow 解码 DVD 视频。将其视为实验性功能,但稳定。
- 原始视频:正在运行 Vista?如果您想在 WMP11 中使用 ffdshow 作为原始视频的直通,则必须选中“在 Vista WMP11 中启用”复选框。
此页面允许您设置少量杂项选项,如果存在,还会提供有关当前处理的流的统计信息。
设置
- 您可以在此页面更改解码器的过滤器价值。过滤器价值基本上是 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。
- 选择“保留原始纵横比”。
- 确保选中“内部处理像素纵横比”。
您会发现视频将始终调整为最大可能的最佳分辨率,同时保持正确的纵横比。
Avisynth
[edit | edit source]在官方 ffdshow-tryouts 网站上有一个关于此过滤器的页面。
输出
[edit | edit source]输出页面可以让您控制 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 用户!YV12 输出在许多情况下以及在当前可用的大多数驱动程序版本(2007 年)中似乎已损坏。如果您遇到任何图像损坏问题,请尝试回退到 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)。翻转视频偶尔对损坏或旧流很有用。
音频解码器
[edit | edit source]音频解码器与视频解码器有很多相似之处。因此,此处将不会介绍一些页面,您可以改为直接参考视频解码器的信息。这些页面包括
- 编解码器:唯一的变化是支持的格式,并且有三个带有复选框的项目
- AC3:复选框启用动态范围压缩,这是正常 AC3 解码器的一部分。不建议您禁用此功能,除非您有充分的理由这样做。
- DTS:动态范围压缩的复选框与上面相同。第二个复选框“在 WAV 中检查 DTS”用于告诉 ffdshow 检查 .wav 文件,看看它们是否实际上包含 DTS 音频。您可以从超级音频 CD 和 DVD 音频光盘中获取这些文件。
- Vorbis: 启用 VorbisGain 会告诉 ffdshow 读取可能写入 vorbis 比特流的建议增益设置,并在存在时应用它。使用取决于用户偏好,您可以将其视为一种“音量均衡”形式。
- 信息和调试: 除了为当前播放的流提供的不同信息外,其他方面都相同。
此页面控制混音器过滤器,它可以更改正在处理的音频流中的声道数量。它的主要用途是混合所有音频流,使其具有与您的音频设置相同的声道数量。增加声道数量被称为上混,而减少则被称为下混。
有两种方法可以定义输出声道的数量:使用配置预设,或手动指定矩阵。请注意,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 声道音频听起来更糟。
- 头部相关传递函数
此页面的设计与视频解码器的页面相同,但实际内容不同。
设置
- 支持的输出样本格式: 此处的复选框设置了视频解码器将使用的允许输出格式。
- 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 输出旨在连接到来自 Cyberlink 等的 DVD 音频解码器过滤器。” 够了。
- 连接到在您希望尝试强制将音频输出发送到特定位置时很有用。通常情况下,DirectSound 是默认的也是首选的输出,但在某些情况下,您可能想要使用其他输出。