ffmpeg视音频处理工具

  • FFmpeg是一套对视频,音频进行格式化,转码,内容编辑,合并等操作的工具.
  • ffmpeg官网
http://ffmpeg.org/
  • ffmpeg对各大操作系统均有支持,github上中有其对应的源码,也可以直接下载编译后的工具使用

ffmpeg视音频处理工具_第1张图片

  • 下载后将文件解压得到以下文件,其中bin目录下为所有ffmpeg可以行文件工具

ffmpeg视音频处理工具_第2张图片

  • 示例:为视频添加背景音乐

  • 命令格式,windows下需要加上.exe后缀

ffmpeg.exe -i 视频文件所在目录 -i 背景音乐所在目录 -t 输出视频时长 -y  输出文件路径
  • 文件所在目录地址可以是相对路径,也可以是绝对路径
  • 参数说明
参数 说明
-i 输入源
-t 时长
-y 是否覆盖同名文件
  • 在bin目录下放一个测试视频文件

ffmpeg视音频处理工具_第3张图片

  • 然后打开cmd命令行,输入以下命令,最后的输出文件名为 reset.mp4,视频时长为10秒
ffmpeg.exe -i test.mp4 -i E:\6.music\1.colud-music\花粥_在山河的角落里唱给你听.mp3 -t 10 reset.mp4
  • 执行命令后命令行会出现以下内容

ffmpeg视音频处理工具_第4张图片

  • 最后在bin目录下会得到rest.mp4文件,打开播放后会得到一个时长为10秒有背景音乐的视频

ffmpeg视音频处理工具_第5张图片

  • 示例:截取视频中某一秒的图片
  • 命令
ffmpeg.exe -ss 时间表达式 -y -i 目标视频路径 -vframes 1 视频输出地址
  • 参数说明
参数 说明
-ss 时间段表达式,例如 00:00:01 表示为视频第一秒
-y 是否覆盖同名文件
i 输入源
vframes 视频帧数
  • 截取一个视频文件的第一秒图片
ffmpeg.exe -ss 00:00:01 -y -i test.mp4 -vframes 1 s.jpg

ffmpeg视音频处理工具_第6张图片

在Java中使用ffmpeg

  • 在java程序中可以执行cmd命令行工具,需要使用到 ProcessBuilder 工具类
  • 具体使用如下
// 可执行命令进程
ProcessBuilder processBuilder = new ProcessBuilder();

// 设置执行命令
List<String> command = new ArrayList<>();
command.add("ipconfig"); // 查看ip地址命令
processBuilder.command(command);

// 执行命令
Process start = processBuilder.start();
// 获取输入流
InputStream inputStream = start.getInputStream();

// 打印输入流信息
String string = StreamUtils.copyToString(inputStream, Charset.forName("GBK"));
System.out.println(string);
  • 运行代码控制台打印以下内容

ffmpeg视音频处理工具_第7张图片

示例:使用java程序调用ffmpeg,合并视频与音频文件

 // 可执行命令进程
        ProcessBuilder processBuilder = new ProcessBuilder();

        // 设置执行命令
        List<String> command = new ArrayList<>();

        // 可执行文件路径
        String ffmpeg_exe = "D:\\1.dev-office\\19.ffmpeg\\ffmpeg\\bin\\ffmpeg.exe";
        command.add(ffmpeg_exe);

        // 命令参数
       command.add("-i");

        // 视频文件路径
        String videoPath = "E:\\9.vedio\\test.mp4";
        command.add(videoPath);

        command.add("-i");
        // 音频文件路径
        String audioPath = "E:\\6.music\\1.colud-music\\花粥_在山河的角落里唱给你听.mp3";
        command.add(audioPath);
        // 格式化后视频输出路径
        String outVideoPath = "E:\\9.vedio\\outVideoPath.mp4";
        command.add(outVideoPath);

        for (String str: command){
            System.out.print(str + " ");
        }

        processBuilder.command(command);
        // 执行命令
        Process start = processBuilder.start();

        // 得到输入流
        InputStream inputStream = start.getInputStream();
       // String string = StreamUtils.copyToString(inputStream, Charset.forName("GBK"));

        OutputStream outputStream = start.getOutputStream();
        InputStream errorStream = start.getErrorStream();

        // 关闭流
        if(inputStream != null){
            inputStream.close();
        }
        if(outputStream != null){
            outputStream.close();
        }

        if(errorStream != null){
            errorStream.close();
        }
        // 打印执行命令后的内容
        //System.out.println(string);
  • 得到以下新文件

ffmpeg视音频处理工具_第8张图片

你可能感兴趣的:(javaweb学习笔记)