我正在尝试使用java中的ffmpeg将flv文件转换为mp3。
我正在运行以下命令
cmd.exe / C start / BELOWNORMAL / WAIT / B / ffmpeg -i“C:\ Documents and Settings \ user \ My Documents \ Bob Dylan - Spanish Harlem Incident(LD).flv”“C:\ Documents and设置\用户\我的文档\鲍勃迪伦 - 西班牙哈莱姆事件(LD).mp3“
我收到此错误“系统无法找到该文件。”
我使用以下代码执行命令http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html?page=4
当我在java之外运行它时,从cmd控制台我没有问题
任何想法都将不胜感激。
答案 0 :(得分:1)
您是否正确逃离了特殊字符?如果你只是将它作为字符串粘贴到代码中,它应该是这样的:
String command = "cmd.exe /C start /BELOWNORMAL /WAIT /B /ffmpeg -i \"C:\\Documents and Settings\\user\\My Documents\\Bob Dylan - Spanish Harlem Incident(LD).flv\"";
如果你是,但它仍然无法正常工作,我建议将命令分离出来,如下所示:
Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", "start", "BELOWNORMAL", "/WAIT", "/B", "ffmepg", "-i", "C:\\Documents and Settings\user\\My Documents\\Bob Dylan - Spanish Harlem Incident(LD).flv"});
这将消除引用文件名的需要。
或者,为了提高可读性并排除文件系统的问题,可以使用File类来包装位置,因此:
File f = new File("C:\\Documents and Settings\\user\\My Documents\\Bob Dylan - Spanish Harlem Incident(LD).flv");
Runtime.getRuntime().exec(new String[] {"cmd.exe", "/C", "start", "BELOWNORMAL", "/WAIT", "/B", "ffmepg", "-i", f.getAbsolutePath()});