[英]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.