这几天在帮别人写一个项目展示程序,用Java写的,其中有个视频展示,让我很是纠结,之前没用java做过视频播放,看了下java的jmf,但是局限性太大了,而且只支持那个几种格式,最后决定使用开源ffmpeg的缩小版播放器ffplay完成视频播放。
关于Java调用外部程序,使用的是processBuilder来初始化,然后再定义一个process来获得结果。
代码如下:
package utils;
import java.io.IOException;
/**
* 调用ffplay播放视频
* @author li
* @version 1.0
*/
public class Callffplay {
static String tool;
static String videourl;
public Callffplay(String videourl) {
// TODO Auto-generated constructor stub
String osName = System.getProperty("os.name"); // 操作系统名称
System.out.println(osName);
if (osName.equals("Linux")) {
tool = "/usr/bin/ffplay"; // ffplay在Linux下的路径
} else {
tool = "res/PotPlayer/PotPlayerMini.exe"; // window下放在当前目录
}
this.videourl = videourl;
}
public int start()
{
ProcessBuilder pb = new ProcessBuilder(tool, videourl);
int ret =1;
try {
Process p = pb.start();
ret = p.waitFor();
} catch (IOException e) { // start()命令的执行处理失败
e.printStackTrace();
} catch (InterruptedException e) {
// waitFor()处理失败
e.printStackTrace();
}
return ret;
}
}