7

我搜索了互联网并没有找到解决方案。我希望这个问题不会重复出现。

我在同一文件夹中有以下文件:

  • ffmpeg.exe(32 位版本)
  • IN.mp4(视频编解码器 - AVC,音频编解码器 - PCM)
  • RUN_FILE.bat 和 RUN_AVS.bat 批处理文件
  • SCRIPT.avs(avisynth 脚本文件)
  • MSharpen.dll(avisynth 的锐化过滤器)

内的文字RUN_FILE.bat

ffmpeg -i "IN.mp4" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4

内的文字RUN_AVS.bat

ffmpeg -i "SCRIPT.avs" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4

SCRIPT.avs(3行)内的文字:

LoadPlugin("D:\MSharpen.dll")

DirectShowSource("D:\IN.MP4")

MSharpen(15,150) 

如果我尝试使用媒体播放器经典之类的外部程序加载 avisynth 脚本,它可以正常工作(并锐化视频帧)。

转到命令行并按RUN_FILE.bat预期运行,但是运行时RUN_AVS.bat出现以下错误(请参见屏幕截图):

错误信息

我觉得这很令人困惑,因为 ffmpeg 配置了--enable-avisynth.

我很感激这方面的帮助 - 这是一个更大且非常重要的项目的一部分(自动扫描包含数百个视频文件的文件夹,锐化并将它们重新编码到具有相同文件名的另一个文件夹)。

4

2 回答 2

6

您是否尝试过在屏幕截图中搜索红色线条?

根据我在这里找到的http://ffmpeg.zeranoe.com/forum/viewtopic.php?t=1084和其他来源,未知错误可能是由于 ffmpeg 或 avisynth 中的 32/64 位构建的差异。如果您使用的是 Avisynth 2.5.8 而不是 2.6(打开一个包含“Version()”的 avisynth 脚本作为任何播放器中的最后一个命令以查找您拥有的那个),也可能会出现问题。最后,您可能想尝试在 x264.exe 而不是 ffmpeg 中打开您的脚本,看看它是否有效。

我会将此发布到评论而不是答案,但我还不允许发表评论。

于 2015-03-30T12:04:17.687 回答
1

嗯......这似乎毕竟是版本问题。

rogerdpack 的评论让我系统地尝试旧版本的 ffmpeg 等。我给了他的答案 +1,但我认为答案应该是这个问题的完整解决方案,所以我正在写我自己的答案。希望您了解 rogerdpack :-)

无论如何,这是对我有用的组合(我希望发布 URL 可以):

FFMPEG 32 位版本 2.5.2(从http://ffmpeg.zeranoe.com/下载)

Avisynth 2.5.8(从官方版本下载)

avisynth 的 MSharpen 插件(从MSharpen 官方链接下载)。

确保您事先将 MSharpen.dll 复制到 avisynth 插件文件夹并重新启动计算机。在我的情况下,插件文件夹是C:\Program Files (x86)\AviSynth 2.5\plugins.

顺便说一句,我正在运行带有英特尔 i5-3570K、16GB 内存等的带有 SP1(64 位)的 Windows 7 Ultimate。也许我应该在 OP 中说明这一点。

对于它的价值,这是我的解决方案。

文件夹和文件布局如下:

我有一个主文件夹;名称无关紧要 - 我们称它为“MAIN”。在“主要”中,我有 2 个文件和 2 个文件夹。

这2个文件是:

  1. ffmpeg.exe(2.5.2 版,32 位)
  2. 批量转换.bat

2个文件夹是:

  1. 源(包含所有视频文件)
  2. 目标(将包含编码的输出视频文件)

文件 BatchConvert.bat 具有以下文本:

for %%a in ("Source*.*") do @echo DirectShowSource("%%a") >> "b​​atchScript.avs" && @echo MSharpen(10,120) >> "b​​atchScript.avs" && ffmpeg -i " batchScript.avs" -n -c:v libx264 -crf 24 -c:a libmp3lame -b:a 192k "Target\%%~na.mp4" && del "batchScript.avs" 暂停

批处理文件基本上扫描“源”中的所有文件并将它们编码到“目标”中,它会跳过已经编码的文件。它根本不会改变“源”中的文件,以防万一。

剩下要做的就是将所有视频复制到 Source 并运行 BatchConvert.bat !

于 2015-03-31T04:52:35.103 回答