AviSynth 中 DirectShowSource() 和 FFmpegSource2() 的区别

问题描述 投票:0回答:1

对于非

.avi
A/V 源(如
.mp3
.mp4
等),(至少)有 2 种在 AviSynth(在 Windows 中)中读取这些媒体文件的可能性:

  • 内置媒体过滤器
    DirectShowSource()
    ,采用微软的DirectShow媒体架构。
  • AviSynth 插件
    FFmpegSource2()
    别名
    FFMS2()
    使用 FFmpeg,仅此而已。

它们的优点和缺点是什么?
框架/样本准确等哪个更可靠?

ffmpeg windows avisynth
1个回答
1
投票

DirectShowSource() 使用当前为系统中的特定文件类型安装和启用的编解码器。通常,这意味着当您在媒体播放器中打开该视频文件(包括音频流)时会启动相同的编解码器。如果您启用了一些特殊的后处理选项,它们也会生效。

正如您提到的,

FFmpegSource2()不依赖于系统编解码器,而是使用FFmpeg。默认情况下,它也会忽略音频,即使它存在于源容器中。

一个显着的区别是 DirectShowSource() 没有帧精确搜索,如果您尝试以每帧精度进行一些修剪,或者混合同一事件的两个记录,以便每个帧都匹配。 FFMPEG 可以选择生成

.ffindex
文件以改进搜索功能(默认情况下处于启用状态)。

但是,根据我的经验,当打开一些以 H264 编码的隔行扫描 HDTV 流时,FFmpegSource2 会产生双倍帧速率,因此您可能需要注意这一点。

还有一个名为 DSS2 的外部插件,可以修复原始版本的帧不准确问题。

就我个人而言,我通常使用 DirectShow/DSS2,除非我需要帧精确搜索,因为 FFMS 在首次启动期间可能需要一些时间来进行索引。

© www.soinside.com 2019 - 2024. All rights reserved.