我使用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时,它根本没有取代任何东西,我错过了什么?
更新:我尝试了下面给出的每个想法,但我找不到解决问题的方法。因此,我用" _"替换了空白空间。而且工作得很好。
答案 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
并跟踪错误