Java 视频转码

本文介绍了一个使用Java实现的视频转码方法,通过调用FFmpeg工具进行视频格式转换,并生成带有时间戳和随机数的唯一文件名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 视频转码
 * 
 * @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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值