这几天在帮别人写一个项目展示程序,用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;
    }   
}