簡體   English   中英

FFmpeg使用Java運行時在Mac上以目錄名稱中的空格從PNG制作視頻

[英]FFmpeg Using Java Runtime to Make Video From PNG on Mac with Spaces in Directory Names

我在Mac OSX上遇到問題,我試圖從PNG制作視頻,例如:

String command = "ffmpeg -r 30 -i " + outputFileName + fileName + "_%d.png -i "+
    outputFileName + fileName + ".wav -r 30 -pix_fmt yuv420p " +
    outputFileName + videoName;

Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(command);

不幸的是,我對這些文件名沒有任何控制,它們以空格出現在我面前。 在Windows上,我只用雙引號將命令引起來,並且所有工作都按預期進行。 但是,在Mac上,我嘗試了此操作以及許多其他操作,但均無濟於事。 在文件名中遇到空格后,FFmpeg報告找不到文件,並將字符串截斷到第一個空格為止。 當我用引號將文件名引起來時,FFmpeg告訴我找不到文件,並顯示文件周圍的引號。 如:

String command = "ffmpeg -r 30 -i \" + outputFileName...\"

假設文件名是:

/用戶/我/應用程序文件夾/ ...

FFmpeg將報告:“ / Users / me / Application:沒有這樣的文件或目錄。

沒有引號,它將出現以下錯誤:/ Users / me / Application:沒有這樣的文件或目錄。

我已經嘗試了所有可以想到的轉義序列。 我還嘗試過將轉義符僅放在出現空格的文件名中,例如:

outputFileName = outputFileName.replace(" ", "\" \"");

在這種情況下,FFmpeg說:/ Users / me / Application“:沒有這樣的文件或目錄。

除了用引號轉義,我還嘗試了:

outputFileName = outputFileName.replace(" ", "\\");

我也嘗試過:

outputFileName = outputFileName.replace(" ", "\\ ")

在那種情況下,我得到:/ Users / me / Application:沒有這樣的文件或目錄。

[編輯:在預覽中,我在應用程序的末尾看到反斜杠,但在最后一篇文章中不存在反斜杠...您應該看到一個反斜杠,例如'/.../ Application \\']

有人可以告訴我如何在目錄名稱中包含空格的情況下使FFmpeg運行我的命令嗎? 當目錄名稱出現時,我無法控制它們。 Java能夠很好地找到這些目錄,而目錄名中沒有任何轉義字符。 我要怎么做才能使FFmpeg做到相同?

謝謝你的幫助。

請改用ProcessBuilder 另外,請勿使用一個長命令字符串。 將您的命令分解為各個參數:

ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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