Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Video 使用avisynth脚本作为ffmpeg的输入时出错_Video_Ffmpeg_Avisynth - Fatal编程技术网

Video 使用avisynth脚本作为ffmpeg的输入时出错

Video 使用avisynth脚本作为ffmpeg的输入时出错,video,ffmpeg,avisynth,Video,Ffmpeg,Avisynth,我在网上搜索过,还没有找到解决办法。我希望这个问题不会重复 我在同一文件夹中有以下文件: ffmpeg.exe(32位版本) IN.mp4(视频编解码器-AVC,音频编解码器-PCM) 运行_FILE.bat和运行_AVS.bat批处理文件 SCRIPT.avs(avisynth脚本文件) MSharpen.dll(avisynth的锐化过滤器) RUN_FILE.bat中的文本: ffmpeg -i "IN.mp4" -c:v libx264 -crf 24 -c:a libmp3lame

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

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

  • ffmpeg.exe(32位版本)
  • IN.mp4(视频编解码器-AVC,音频编解码器-PCM)
  • 运行_FILE.bat和运行_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
ffmpeg -i "SCRIPT.avs" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4
RUN_AVS.bat中的文本

ffmpeg -i "IN.mp4" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4
ffmpeg -i "SCRIPT.avs" -c:v libx264 -crf 24 -c:a libmp3lame -aq 2 OUT.mp4
SCRIPT.avs
中的文本(3行):

如果我尝试用外部程序(如media player classic)加载avisynth脚本,效果会很好(并使视频帧锐化)

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

由于ffmpeg配置了
--enable avisynth
,我发现这让人困惑


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

您是否尝试过用谷歌搜索屏幕截图中红色的行

从我在这里和其他来源中发现的情况来看,未知错误可能是由于ffmpeg或avisynth中32/64位构建的差异造成的。如果您使用的是Avisynth 2.5.8而不是2.6,那么也可能会出现问题(打开一个包含“Version()”的Avisynth脚本,作为任何播放机中的最后一个命令,以查找您拥有的版本)。 最后,您可能希望尝试在x264.exe中而不是在ffmpeg中打开脚本,看看它是否有效


我本来会在回答之前把这个贴到评论上,但现在还不允许我发表评论。

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

rogerdpack的话让我系统地尝试了ffmpeg等的旧版本。 我给了他+1的答案,但我认为答案应该是完整的答案,所以我在写我自己的答案。 希望您能理解rogerdpack:-)

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

FFMPEG 32位版本2.5.2(从下载)

Avisynth 2.5.8(从下载)

avisynth的MSharpen插件(从下载)

确保事先将MSharpen.dll复制到avisynth插件文件夹,然后重新启动计算机。在我的例子中,插件文件夹是
C:\ProgramFiles(x86)\AviSynth 2.5\plugins

顺便说一句,我使用SP1(64位)运行Windows7Ultimate,带有Intel i5-3570K、16GB ram等。也许我应该在OP中说明这一点

无论如何,这是我的解决方案

文件夹和文件布局如下所示:

我有一个主文件夹;名字不重要,我们叫它“MAIN”。 在“MAIN”中,我有2个文件和2个文件夹

这两个文件是:

  • ffmpeg.exe(版本2.5.2,32位)
  • BatchConvert.bat
  • 这两个文件夹是:

  • 源(包含所有视频文件)
  • 目标(将包含编码的输出视频文件)
  • BatchConvert.bat文件包含以下文本:

    对于%%a in(“Source**”)do@echo DirectShowSource(%%a”)>>“batchScript.avs”和&&echo MSharpen(10120)>>“batchScript.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

    谢谢。在看到您的评论之前,我实际上已经成功地使用了x264.exe,但这不是一个可行的解决方案,因为它只能创建带有视频流的文件(它会丢失所有音频曲目,需要单独进行多路复用。我正在寻找一站式文本解决方案…)。至于版本-我的FFMPEG是32位的,Avisynth也是(在发布问题之前,我尝试了所有的组合)。我会继续尝试并发布我的发现。谢谢。我遇到了这个错误,我确实在安装了32位AviSynth 2.6的路径中使用了64位ffmpeg。切换到最新的32位ffmpeg,运行正常。但是,出于好奇,我在OP的截图中测试了32位ffmpeg N-71157-g7c6b043版本,但它不适用于AviSynth 2.5.8。。。但与AviSynth 2.6.0(2015年3月31日,请注意日期)和AviSynth 2.6 MT(2015年2月20日)配合使用。最新的ffmpeg可用于所有这些功能。我没有检查(15年1月14日)可能的版本。因此,错误并不真正表明故障可能在哪里。它可能是上面的任何一个。avisynth的东西几天前在FFmpeg中发生了一些变化,旧版本的效果更好吗?其他读取AVISynch文件的程序可以读取这些文件吗?其他程序肯定可以读取这些avs文件,正如我在原始帖子中所写的那样。具体来说,media player classic、megui和x264.exe工作正常。我确实尝试过ffmpeg和avisynth的不同组合(32位与64位等),但不记得我是否尝试过使用两个旧版本。我现在试一试。一个更简单的脚本在类似FFmpeg的版本()中工作吗。。。尝试用外部程序加载avisynth脚本…“这是32位版本冲突的迹象。此外,如果您想知道avs脚本到底产生了哪条错误消息,请尝试将其加载到VirtualDub firstHmm中,avisynth 2.6的“最新”ffmpeg应该可以正常工作,您可以试试吗?具体来说,avisynth 2.6 RC1或更高版本。