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位

  • 相关阅读:
    网上搜索整理的前端开发工程师面试题附答案
    Python-RabbitMQ-topic(细致消息过滤的广播模式)
    Python-RabbitMQ-direct(广播模式)
    Python-RabbitMQ-fanout(广播模式)
    rabbitmq中关于exchange模式type报错
    Python-RabbitMQ(持久化)
    Python-RabbitMQ(简单发送模型)
    python-gevent模块实现socket大并发
    python-gevent模块(自动切换io的协程)
    python-greenlet模块(协程)
  • 原文地址:https://www.cnblogs.com/live365wang/p/2150601.html
Copyright © 2011-2022 走看看