2013-03-19 28 views
2

我想要做的事情實際上超級簡單,如果在cmd窗口內執行,它工作得很好,儘管它在批處理腳本中使用時不起作用。以下命令通常會使用模式anim_xxxx.png獲取所有.png文件(%04d代表ffmpeg中的4個數字)。ffmpeg在批處理腳本中沒有正確地使用通配符

ffmpeg -f image2 -i anim_%04d.png -vcodec mjpeg -q:v 0 -r 25 foo.avi 

現在我得到的錯誤是與我的圖像序列通配符,我不知道問題是什麼。使用另一個通配符(如*)會給我同樣的錯誤。

[圖像2 @ 000000000033e8c0]能找到任何文件與範圍0-4 anim_render.bat4d.png路徑 'anim_render.bat4d.png' 和索引:沒有這樣的文件或目錄

does%04d是否與批處理文件中不存在批處理文件外的任何變量類似?到目前爲止,我找不到任何類似的案例。

回答

4

不知道什麼%04儘可能FFMPEG而言意味着,儘管anim_*.mpg似乎指定all starting 'anim_'更普遍理解的方法,也許這是一個特殊的意義+any 4 characters(雖然????似乎這裏更爲普遍。

然而,這樣看來,ffmpeg的期待是,%提供literally所以在批的解決方法是先於%以尖號:^%

Erm-作出這樣的雙% - ^x通常適用於批量中具有特殊含義的字符;似乎你需要%轉義% ...

+1

它指定模式anim_xxxx.png就像我在問題中寫的。 xxxx在%04d的情況下是從0001開始的遞增數字。 使用^%給我同樣的錯誤不幸:/ 哦,我應該提到,我已經嘗試了*並得到了相同的錯誤。 – PTS 2013-03-20 00:23:41

+2

%批處理中的%0表示'此批處理文件的名稱',因此批處理的名稱是「anim_render.bat」,批處理替換%0,並且'anim_%04d.png'成爲'anim_anim_render.bat4d.png'所以從理論上講,這條線應該變成'ffmpeg -f image2 -i anim _ %% 04d.png -vcodec mjpeg -q:v 0 -r 25 foo.avi' - 雙擊'%' – Magoo 2013-03-20 00:35:27

+0

呃,我不知道爲什麼但這是有效的,儘管我嘗試了完全相同的事情,但在使用與上面完全相同的腳本時再次獲得相同的錯誤。那麼它現在的作品,答案是正確的,所以謝謝讓我再試一次我猜:D – PTS 2013-03-20 00:41:17