Java中的FFMPEG(运行时错误)
我想写一个程序,用FFMPEG将视频转换成帧。当我在Ubuntu终端上使用它时,它工作得很好。但当我试图将其放入Java代码时,它会给我一个运行时错误。我在下面的代码中出错了吗Java中的FFMPEG(运行时错误),java,ffmpeg,runtime.exec,Java,Ffmpeg,Runtime.exec,我想写一个程序,用FFMPEG将视频转换成帧。当我在Ubuntu终端上使用它时,它工作得很好。但当我试图将其放入Java代码时,它会给我一个运行时错误。我在下面的代码中出错了吗 import java.util.*; import java.awt.*; import java.lang.*; import java.lang.Runtime; import java.io.*; import java.io.IOException; public class ConvertVideoToIm
import java.util.*;
import java.awt.*;
import java.lang.*;
import java.lang.Runtime;
import java.io.*;
import java.io.IOException;
public class ConvertVideoToImage
{
private SingletonServer ss = null;
public ConvertVideoToImage(SingletonServer ss)
{
this.ss = ss;
}
public void run()
{
convertVideo();
}
public void convertVideo()
{
try
{
Runtime rt = Runtime.getRunTime().exec("ffmpeg" + "-i" + "display.wmv" + "image%d.jpg");
}
catch(Exception e){}
}
}
编辑:
我已经按照你的建议修改了代码,但它也不起作用。当我在谷歌上搜索时,我发现有人把完整路径放在可执行文件中,结果变成这样:
Runtime.getRuntime().exec("/home/pc3/Documents/ffmpeg_temp/ffmpeg -i display.wmv image%d.jpg")
顺便说一句,谢谢你的回复。我还有一个问题。可以为FFMPEG制作计数器吗?我在Ubuntu终端中使用了这个命令,让它将视频转换为30帧/1秒:
ffmpeg -i display.wmv image%d.jpg
这将自动生成像image1.jpg、image2.jpg到image901.jpg这样的数字。能为这个做个柜台吗?因为我需要清点文件并控制数量
提前感谢。调用
exec
时,不应在命令字符串中指定参数,而应将它们作为第二个参数在数组中传递
Process p = Runtime.getRunTime().exec("ffmpeg",
new String[]{"-i", "display.wmv", "image%d.jpg"));
// are you sure regarding this %^
谢谢你的回复。我已经按照你的建议更改了代码,但我也不工作。我用谷歌搜索了一下,发现有人把完整的路径放在了exec里面,它变成了这个Runtime.getRuntime().exec(“/home/pc3/Documents/ffmpeg_temp/ffmpeg-i display.wmv image%d.jpg”),它可以编译而不会出错。是否可以使用计数器替换图像%d.jpg?提前谢谢你能把错误文本(stacktrace)放在这里吗?我已经用另一个代码解决了错误并替换了格式。。顺便说一句,谢谢weekens@weekens