zoukankan      html  css  js  c++  java
  • ffmpeg视频转换及截图

    视频转码:

        List<String> commend = new java.util.ArrayList<String>();
    commend.add(ffmpeg硬盘路径);
    commend.add(
    "-i");
    commend.add(转码文件硬盘路径);
    commend.add(
    "-y");
    commend.add(
    "-ar");
    commend.add(
    "22050");
    commend.add(
    "-s");
    commend.add(
    "480*360"); //转换后的视频大小
    commend.add(
    "-b");
    commend.add(
    "1000");
    commend.add(
    "-qscale");
    commend.add(
    "4");
    commend.add("-ab");//音质设置,越大音质越好,但文件也会变大
    commend.add("56");
    commend.add(输出文件路径);
    try {
    ProcessBuilder builder
    = new ProcessBuilder();
    builder.command(commend);
    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(
    "视频转码失败!");
    }

    视频截图:

        List<String> commend = new java.util.ArrayList<String>();
    commend.add(ffmpeg文件硬盘路径);
    commend.add(
    "-i");
    commend.add(待截图文件硬盘路径);
    commend.add(
    "-y");
    commend.add(
    "-f");
    commend.add(
    "image2");
    commend.add(
    "-ss");
    commend.add(
    "8");  //在视频的某个插入时间截图,例子为8秒后
    commend.add(
    "-t");
    commend.add(
    "0.001");
    commend.add("-ab");//音质设置,越大音质越好,但文件也会变大
    commend.add("56");
    commend.add(
    "-s");
    commend.add(
    "350*240"); //截图后的图片大小
    commend.add(截图的图片保存路径);
    try {
    ProcessBuilder builder
    = new ProcessBuilder();
    builder.command(commend);
    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(
    "视频截图失败!");
    }

    windows下用ffmpeg.exe下载路径http://ffmpeg.zeranoe.com/builds/ 自己选择32位或64位

  • 相关阅读:
    资源:mysql下载路径
    知识点:jar包与war包的差异
    Linux:jar服务部署
    Flyway:Spring Boot中使用Flyway来管理数据库版本
    Java:Java控制台输出保存进文件
    Maven:手动添加jar包进Maven本地库内
    Https:SSL双向认证机制(理论知识)
    Linux ubuntu 下寻找 texlive 缺失包 texlive 缺失包(转载)
    Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)(转载)
    Android应用开发基础篇(12)-----Socket通信(转载)
  • 原文地址:https://www.cnblogs.com/live365wang/p/2150601.html
Copyright © 2011-2022 走看看