从参数替换空格以运行命令

时间:2017-05-01 14:14:33

标签: java ffmpeg replaceall

我使用Runtime.getRuntime.exec(String)用ffmpeg剪切一些歌曲。 但是,当我的歌曲有一个空白的名字时,它不起作用......

所以在我剪切这首歌之前,我想用" \"替换我歌曲的每个空白区域。

我做到了:

String in = directory+songs.get(i);
String out = directory+"trimed_"+songs.get(i);
in.replaceAll(" "," \\ ");
out.replaceAll(" ", "\\ ");
String str = "ffmpeg -t 1 -i "+in+" -vcodec copy "+out;
Runtime.getRuntime().exec(str);

但是当我打印str时,它根本没有取代任何东西,我错过了什么?

更新:我尝试了下面给出的每个想法,但我找不到解决问题的方法。因此,我用" _"替换了空白空间。而且工作得很好。

1 个答案:

答案 0 :(得分:0)

尝试

String in = directory+songs.get(i);
String out = directory+"trimed_"+songs.get(i);

/* in = in.replaceAll("\\s","\\\\ ");
   out = out.replaceAll("\\s","\\\\ "); 
*/

in = "\"" + in + "\"";
out = "\"" + out + "\"";

String str = "ffmpeg -t 1 -i " + in + " -vcodec copy " + out;
Runtime.getRuntime().exec(str);
System.out.println("Command executed " + str);

注意:我自己测试了这段代码,工作正常。 如果它仍然不起作用,则通过从日志中复制str并跟踪错误

来手动执行该命令