对于非.avi
A/V 源(如.mp3
、.mp4
等),在 AviSynth(在 Windows 中)中读取这些媒体文件(至少)有 2 种可能性:
- 内置媒体过滤器
DirectShowSource()
,使用微软的 DirectShow媒体架构。 - 使用FFmpeg的 AviSynth 插件
FFmpegSource2()
别名,仅此而已。FFMS2()
它们的优点和缺点是什么?
哪个更可靠,帧/样本准确等?
DirectShowSource()使用当前为系统中特定文件类型安装和启用的编解码器。通常这意味着当您在媒体播放器中打开该视频文件(包括音频流)时会启动相同的编解码器。如果您在那里启用了一些特殊的后处理选项,它们也将生效。
正如您所提到的, FFmpegSource2()不依赖于系统编解码器,而是使用 FFMPEG。默认情况下,即使它存在于源容器中,它也会忽略音频。
一个显着的区别是 DirectShowSource() 没有帧精确的搜索,如果您尝试以每帧精度进行一些修剪,或者说,混合同一事件的两个记录以便每一帧都匹配,这将变得至关重要. FFMPEG 可以选择生成 .ffindex 文件以改进搜索功能(默认开启)。
然而,根据我的经验,在打开一些以 H264 FFmpegSource2 编码的隔行扫描 HDTV 流时会产生双倍帧速率,因此您可能需要注意这一点。
还有一个名为DSS2的外部插件修复了原版的帧不准确问题。
就个人而言,我通常使用 DirectShow/DSS2,除非我需要帧精确的搜索,因为 FFMS 在首次启动期间可能需要一些时间来进行索引。