java中视频转码实现

这个需要用到第三方工具~纯java的视频转码软件我还真没见过,有见过的大佬可以分享一下。

强大的工具:ffmpeg

先安装,windows,linux版本自行选择,去官网下载,这个工具很强大支持很多视频格式的转换。

安装步骤省略...百度一大把...

其实这工具安装好了就能转码了,跟格式转换了

这个工具使用的是命令的方式去做转码,支持java代码调用工具,同样是通过在java中调起ffmpeg,然后执行转码的命令。使用起来还是挺方便的。支持苹果,安卓手机拍摄的视频转码压缩,支持多种格式的视频文件上传转码压缩等...

........简单介绍到这里......来看一下例子,更直观的看这个工具的使用----例子只演示java中的使用

将视频文件转码为MP4

1.加载ffmpeg,加载路径是插件的安装目录:

windows D:\\插件\\ffmpeg1\\ffmpeg\\bin\\

  linux   /wls/soft/videoServie/ffmpeg_dev/

两者有一定的区别,Windows下加载目录需要到bin目录下

2.编写转码工具类,实现转码:

private static boolean processMp4(String oldfilepath,String videoName) {

    if (!checkfile(oldfilepath)) {
        System.out.println(oldfilepath + " is not file");
        return false;
    }
    logger.info("插件加载...路径:"+ffmpegPath);
    List<String> command = new ArrayList<String>();
    command.add(ffmpegPath + "ffmpeg");
    command.add("-i");
    command.add(oldfilepath);
    command.add("-c:v");
    command.add("libx264");
    command.add("-mbd");
    command.add("0");
    command.add("-c:a");
    command.add("aac");
    command.add("-strict");
    command.add("-2");
    command.add("-pix_fmt");
    command.add("yuv420p");
    command.add("-movflags");
    command.add("faststart");
    command.add(outputPath + videoName);
    try {

        logger.info("命令执行:"+ffmpegPath+"ffmpeg -i " + oldfilepath + " -ab 56 -ar 22050 -qscale 8 -r 15 -s 600x500 "+ outputPath + videoName);

        // 方案1
        Process videoProcess = Runtime.getRuntime().exec(ffmpegPath + "ffmpeg -i " + oldfilepath
                + " -ab 56 -ar 22050 -qscale 8 -r 15 -s 600x500 "
                + outputPath + videoName);

        // 方案2
        //Process videoProcess = new ProcessBuilder(command).redirectErrorStream(true).start();

        new PrintStream(videoProcess.getErrorStream()).start();

        new PrintStream(videoProcess.getInputStream()).start();

        videoProcess.waitFor();
        logger.info("视频转码完成!路径:"+outputPath+videoName);
        return true;
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    }
}

入参:oldfilepath 原视频路径,最好是在机器上的绝对路径,videoName是新的视频的名称。ffmpegPath就是上面说的插件加载的地址。

这里就结束了~猜你们想知道这个命令为什么这么写?这个有时间再写一篇讲讲,也可以自行去查找系统的学习一下,这个插件提供的命令。

猜你喜欢

转载自blog.csdn.net/qq_34128089/article/details/125338065