[英]Error using avisynth script as input to ffmpeg
我搜索過互聯網並沒有找到解決方案。 我希望這個問題不會重復。
我在同一個文件夾中有以下文件:
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)
如果我嘗試使用外部程序(如媒體播放器classic)加載avisynth腳本,它可以正常工作(並銳化視頻幀)。
轉到命令行並運行RUN_FILE.bat
按預期工作,但運行RUN_AVS.bat
我收到以下錯誤(請參見屏幕截圖):
我覺得這很令人困惑,因為ffmpeg配置了--enable-avisynth
。
我很感激這方面的幫助 - 這是一個更大,更重要的項目的一部分(自動掃描包含數百個視頻文件的文件夾,銳化並將它們重新編碼到具有相同文件名的另一個文件夾)。
您是否嘗試使用Google搜索屏幕截圖中的紅線?
從我在這里找到的http://ffmpeg.zeranoe.com/forum/viewtopic.php?t=1084和其他來源,未知錯誤可能是由於ffmpeg或avisynth中32 / 64bit版本的差異。 如果您使用的是Avisynth 2.5.8而不是2.6,則可能會出現問題(打開包含“Version()”的avisynth腳本作為任何播放器中的最后一個命令,以找到您擁有的那個)。 最后,您可能想嘗試在x264.exe而不是ffmpeg中打開腳本,看看它是否有效。
我會把這個發布到評論的回答中,但我還沒有被允許發表評論。
嗯......似乎這畢竟是一個版本的問題。
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
。
順便說一下,我正在運行帶有SP1(64位)的Windows 7旗艦版,配備英特爾i5-3570K,16GB內存等。也許我應該在OP中說明。
對於它的價值,這是我的解決方案。
文件夾和文件布局如下:
我有一個主文件夾; 這個名字並不重要 - 我們稱之為'MAIN'。 在'MAIN'中我有2個文件和2個文件夾。
這2個文件是:
這2個文件夾是:
BatchConvert.bat文件具有以下文本:
for %% 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:libmp3lame -b:192k”Target \\ %% ~na.mp4“&& del”batchScript.avs“暫停
批處理文件基本上掃描來自“Source”的所有文件,並在“Target”中對它們進行編碼,並跳過已經編碼的文件。 它根本不會改變'Source'中的文件,以防萬一。
剩下要做的就是將所有視頻復制到Source並運行BatchConvert.bat!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.