簡體   English   中英

使用avisynth腳本作為ffmpeg的輸入時出錯

[英]Error using avisynth script as input to ffmpeg

我搜索過互聯網並沒有找到解決方案。 我希望這個問題不會重復。

我在同一個文件夾中有以下文件:

  • 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) 

如果我嘗試使用外部程序(如媒體播放器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個文件是:

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

這2個文件夾是:

  1. 來源(包含所有視頻文件)
  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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM