Java 视频转码

来源:互联网 发布:职业医师考试数据库 编辑:程序博客网 时间:2024/06/05 16:47
/** * 视频转码 *  * @author hg * */public class VideosTranscoding {    // 用来产生随机验证码的    private static Random rand = new Random();    private static String[] str = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };    /**     *      * @param videourl     *            视频路径     * @return     */    public String updvideostranscoding(String videourl) {        // 存放产生的随机数        StringBuffer sms;        // 生成三位数的随机数        StringBuffer buf = new StringBuffer();        for (int i = 0; i < 3; i++) {            buf.append(str[rand.nextInt(10)]);        }        sms = buf;        // 获取当前时间        Date now = new Date();        // 格式化字符        SimpleDateFormat date = new SimpleDateFormat("yyyy MM dd hh mm ss");        String datestring = date.format(now);        // 去除时间里的空格        String nokongge = datestring.replaceAll(" ", "");        String longid = nokongge + sms;        long randomid = new Long(Long.parseLong(longid));        //存放路径        String backurl="E:\\Program Files\\Apache Software Foundation\\Tomcat 8.0\\webapps\\gatesskills\\updvids\\"                + randomid + ".mov";        List<String> convert = new ArrayList<String>();        convert.add("E:\\ffmpeg.exe"); // 添加转换工具路径        convert.add("-i"); // 添加参数"-i",该参数指定要转换的文件        convert.add(videourl); // 添加要转换格式的视频文件的路径        convert.add("-qscale"); // 指定转换的质量        convert.add("6");        convert.add("-ab"); // 设置音频码率        convert.add("64");        convert.add("-ac"); // 设置声道数        convert.add("2");        convert.add("-ar"); // 设置声音的采样频率        convert.add("22050");        convert.add("-r"); // 设置帧频        convert.add("24");        convert.add("-y"); // 添加参数"-y",该参数指定将覆盖已存在的文件        convert.add(backurl);        try {            ProcessBuilder builder = new ProcessBuilder();            builder.command(convert);            builder.redirectErrorStream(true);            System.out.println("视频转码开始...");            // builder.start();            Process process = builder.start();            InputStream in = process.getInputStream();            byte[] re = new byte[1024];            System.out.print("正在进行转码,请稍候");            while (in.read(re) != -1) {                System.out.print(".");            }            System.out.println("");            in.close();            System.out.println("视频转码完成...");        } catch (Exception e) {            e.printStackTrace();            System.out.println("视频转码失败!");        }        return backurl;    }
阅读全文
1 0
原创粉丝点击