首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将avisynth脚本用作ffmpeg的输入时出错

将avisynth脚本用作ffmpeg的输入时出错
EN

Stack Overflow用户
提问于 2015-03-30 08:56:18
回答 2查看 6.7K关注 0票数 7

我在网上搜索过,还没有找到解决方案。我希望这个问题不要重复。

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

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

RUN_FILE.bat中的文本

代码语言:javascript
复制
ffmpeg -i "IN.mp4" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4

RUN_AVS.bat中的文本

代码语言:javascript
复制
ffmpeg -i "SCRIPT.avs" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4

SCRIPT.avs中的文本(3行):

代码语言:javascript
复制
LoadPlugin("D:\MSharpen.dll")

DirectShowSource("D:\IN.MP4")

MSharpen(15,150) 

如果我尝试用一个外部程序加载avisynth脚本,比如媒体播放器经典版,它可以很好地工作(并且锐化视频帧)。

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

我觉得这让人困惑,因为ffmpeg是用--enable-avisynth配置的。

我希望在这方面的帮助-这是一个更大和非常重要的项目的一部分(自动扫描一个文件夹与数百个视频文件,锐化和重新编码到另一个文件夹具有相同的文件名)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-31 04:52:35

好吧..。看来这毕竟是个版本的问题。

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

顺便说一句,我正在运行Windows7极限操作系统,使用SP1 (64位),英特尔i5-3570K,16 OP内存等。也许我应该在操作中说明这一点。

不管值多少钱,这是我的解决办法。

文件夹和文件布局如下:

我有一个主文件夹;这个名字并不重要--让我们称之为“主文件夹”。在“主”中,我有两个文件和两个文件夹。

这两个文件是:

  1. ffmpeg.exe (版本2.5.2,32位)
  2. BatchConvert.bat

这两个文件夹是:

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

文件BatchConvert.bat有以下文本:

%a in ("Source*.*") do @echo DirectShowSource(“%a”) >> "batchScript.avs“& @echo MSharpen(10,120) >> "batchScript.avs”&& ffmpeg -i "batchScript.avs“-n -c:v libx264 -crf 24 -c:a libmp3lame -b:a 192 k& del "batchScript.avs”

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

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

票数 1
EN

Stack Overflow用户

发布于 2015-03-30 12:04:17

你试过搜索屏幕截图中红色的行了吗?

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

我会把这个贴在评论上,但我还不能发表评论。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29342030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档