2014-07-01 65 views
0

我試圖在ffmpeg中使用-vf圖文輸入函數ffmpeg命令行行爲隨機性

下面的命令成功,但是隻要我們改變命令(改變位置fontfile =文本運行

ffmpeg -y -i "C:\2.avi" -preset ultrafast -crf 18 -vf drawtext=text=stackoverflow:fontfile=C:/WINDOWS/Fonts/georgia.ttf C:\o.mkv 

=

ffmpeg -y -i "C:\2.avi" -preset ultrafast -crf 18 -vf drawtext=fontfile=C:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow C:\o.mkv 

我收到以下錯誤

[ Parsed_drawtext_0 @ 02d88a80]無法加載字體「C」:無法找到匹配的f ONT

[AVFilterGraph @ 02c86a20]錯誤初始化濾波器 'DrawText的' 與ARGS 'fontf ILE = C:/WINDOWS/Fonts/georgia.ttf:文本=計算器:' 錯誤打開過濾器!

我不明白爲什麼改變完全相同的參數可以影響整體結果,這是我真正的問題,因爲每次我添加到這個查詢時,我不得不懷疑它只是參數的定位還是我其實做錯了什麼。

回答

0

問題是該路徑使用冒號(:),該冒號也恰好是參數的分隔符。我預料,這兩個命令行失敗,其實......

docs狀態,你需要逃避一般的冒號,也給了drawtext

注意一個具體的例子是,冒號需要被逃脫。

drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg' 

所以,以下的作品(Windows是一個有點特別是關於如何escpae在外殼的東西,例如,沒有單引號轉義,所以你需要躲避\爲好)

drawtext=fontfile=C\\:/WINDOWS/Fonts/georgia.ttf:text=stackoverflow 
+0

將很快測試,似乎在邏輯上是正確的。感謝您指出了這一點。 總的來說,雖然你會假設如果是這種情況,它會失敗,無論它指定的訂單,但它doesnt ... – cecilli0n