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