繁体   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