使用lowpriority从java运行ffmpeg

时间:2012-08-14 15:52:18

标签: java ffmpeg

我正在尝试使用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控制台我没有问题

任何想法都将不胜感激。

1 个答案:

答案 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()});