Java 使用 ffmpeg.exe ( FLV视频转换器 )

最近公司的网站需要一些视频功能 , 在本地测试了不同格式的视频 , 但是有些格式的视频在浏览器上是不支持的 , 所以就想到了将视频格式转换统一. 找啊找就找到了这个 .

ffmpeg.exe是一个源于Linux的工具软件,为FLV视频转换器,可以轻易地实现FLV向其它格式avi、asf、 mpeg的转换或者将其它格式转换为flv。

这个工具的使用需要找个这个工具的存放位置或者 , 程序中会调用ffmpeg.exe文件(这个东西网上很多随便下一个)

这里写图片描述

    /**
     * 将视频转为flv视频
     * 
     * @param mediapath   视频文件路径(原)
     * @param ffmpegpath   转码工具所在路径
     * @param codedMediaPath  转码 后的视频文件位置(新)
     * @uesr "[email protected]"
     * @date 2016年11月19日下午3:32:38
     */
    public static boolean transCodeToFlv(String mediapath, String ffmpegpath,
            String codcFilePath) {

        File file = new File(mediapath);
        if (!file.exists()) {
            System.err.println("路径[" + mediapath + "]对应的视频文件不存在!");
            return false;
        }
        // 创建一个List集合来保存转换视频文件为flv格式的命令
        List<String> commands = new java.util.ArrayList<String>();
        commands.add(ffmpegpath); // 添加转换工具路径
        commands.add("-i"); // 添加参数"-i",该参数指定要转换的文件
        commands.add(mediapath); // 添加要转换格式的视频文件的路径
        commands.add("-qscale"); // 指定转换的质量
        commands.add("6");
        commands.add("-ab"); // 设置音频码率
        commands.add("64");
        commands.add("-ac"); // 设置声道数
        commands.add("2");
        commands.add("-ar"); // 设置声音的采样频率
        commands.add("22050");
        commands.add("-r"); // 设置帧频
        commands.add("24");
        commands.add("-y"); // 添加参数"-y",该参数指定将覆盖已存在的文件
        commands.add(codcFilePath);
        try {
            ProcessBuilder builder = new ProcessBuilder();
            builder.command(commands);
            builder.redirectErrorStream(true);
            builder.start();
            System.out.println("转码成功!");
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
    /**
     * 截取视频的截图
     * @param media_path
     * @param ffmpeg_path
     * @param picPath
     * @return
     * @uesr "[email protected]"
     * @date 2016年11月19日下午3:35:54
     */
    public static boolean mediaPrtScreen(String media_path, String ffmpeg_path,
            String picPath) {
        File file = new File(media_path);
        if (!file.exists()) {
            System.err.println("路径[" + media_path + "]对应的视频文件不存在!");
            return false;
        }
        List<String> commands = new java.util.ArrayList<String>();
        commands.add(ffmpeg_path);
        commands.add("-i");
        commands.add(media_path);
        commands.add("-y");
        commands.add("-f");
        commands.add("image2");
        commands.add("-ss");
        commands.add("20");// 这个参数是设置截取视频多少秒时的画面
        // commands.add("-t");
        // commands.add("0.001");
        commands.add("-s");
        commands.add("700x525");
        commands.add(picPath);
        try {
            ProcessBuilder builder = new ProcessBuilder();
            builder.command(commands);
            builder.start();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public static void main(String[] args) {

        transCodeToFlv("F:/video/建国大业.mpg", "F:/video/ffmpeg.exe",
                "F:/video/建国大业.flv");
        mediaPrtScreen("F:/video/屌丝男士.mov", "F:/video/ffmpeg.exe",
                "F:/video/屌丝男士.jpg");
    }

这个工具的命令很多 , 这里我只是调用了一些简单的命令 .

发布了58 篇原创文章 · 获赞 40 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/xinzhifu1/article/details/53289104