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