ffmpeg视频裁剪

2023-11-15

**需要注意,ffmpeg 命令 -s 指定了宽高后,如果为奇数宽高(101*101),则裁剪后的视频无法正常播放,不加-s则ffmpeg自动-1处理;**
 private void cutVideo() throws Exception{
    try {
        String ffmpegSource ="/opt/xxxxx/ffmpeg/ffmpeg";// todo ffmpeg程序绝对路径
        String videoSource = "/opt/xxxxxx/xxx_source.mp4"; //todo  视频源绝对路径
        String videoTarget = "/opt/xxxxxx/xxx_target.mp4"; // todo 视频目标绝对路径
        //执行程序拼接命令
        List<String> command = new ArrayList<>();
        command.add(ffmpegSource);
        command.add("-i");
        command.add(videoSource);
        command.add("-vf");
        int cutVideoWidth = 100;  // todo 要裁的实际宽
        int cutVideoHeight = 100; // todo 要裁的实际高
        int leftTopX = 0; //todo 要裁的部分左上角x坐标
        int leftTopY = 0; //todo 要裁的部分左上角y坐标
        StringBuffer tmp = new StringBuffer();
        tmp.append("crop=w=");
        tmp.append(cutVideoWidth);
        tmp.append(":h=");
        tmp.append(cutVideoHeight);
        tmp.append(":x=");
        tmp.append(leftTopX);
        tmp.append(":y=");
        tmp.append(leftTopY);
        String vfStr = tmp.toString();
        command.add("-vf");
        command.add(vfStr);
        command.add("-r");
        command.add("25");
        command.add("-y");
        command.add("-s");
        String sStr = cutVideoWidth + "*" + cutVideoHeight;
        command.add(sStr);
        command.add(videoTarget);
        ProcessBuilder builder = new ProcessBuilder();
        builder.command(command);
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader reader = null;
        reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line = null;
        StringBuffer message = new StringBuffer();
        while ((line = reader.readLine()) != null) {
            // ffmpeg 返回信息拼接字符串
            message.append(line.trim() + "\r\n");
            continue;
        }
        p.waitFor();
        System.out.println(message.toString().trim());
        if (reader != null) {
            reader.close();
        }
        p.destroy();
    }catch (Exception e){
        e.printStackTrace();
        // message 就是 ffmpeg报出来的错误信息

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ffmpeg视频裁剪 的相关文章

  • 迪杰斯特拉算法 旅游规划

    目录 题目描述 AC代码 题目描述 有了一张自驾旅游路线图 你会知道城市间的高速公路长度 以及该公路要收取的过路费 现在需要你写一个程序 帮助前来咨询的游客找一条出发地和目的地之间的最短路径 如果有若干条路径都是最短的 那么需要输出最便宜的

随机推荐

  • DELL旧服务器清空原有磁盘配置、划分新磁盘安装系统的方法

    https blog csdn net qingsongleo article details 31788075 有很多创业公司为了节省成本 会通过一些途径购买二手的服务器 二手服务器不能直接使用 因为服务器里现存的配置可能和自己的生产环境
  • 【JDK】Mac版安装JDK并配置环境

    参考文章地址 https www cnblogs com dingzhijie p 7016397 html https blog csdn net deliciousion article details 78046007 教程内容为在M
  • linux日志生成速率统计,Linux学习29-awk提取log日志信息,统计日志里面ip访问次数排序...

    前言 有一段log日志 需从日志里面分析 统计IP访问次数排序前10名 查看是否有异常攻击 日志提取 如下日志 这段日志包含的信息内容较多 我们希望提取ip 访问时间 请求方式 访问路径 不带参数 状态码 123 125 72 61 05
  • numpy.empty的用法

    一 用法 np empty shape dtype float order C 二 参数 shape 返回空数组的维度 dtype 指定输出数组的数值类型 order 是否在内存中以C或fortran 行或列 顺序存储多维数据 三 返回值
  • qt Connect 连接两种方式

    https blog csdn net xiezhongyuan07 article details 79247022 写的挺清楚
  • python画玫瑰图_python之windrose风向玫瑰图的用法-Go语言中文社区

    1 安装 A package is available and can be downloaded from PyPi and installed using pip install windrose Install latest deve
  • SamlSsoClient

    Copyright C 2009 Google Inc Licensed under the Apache License Version 2 0 the License you may not use this file except i
  • 显示具体化、显示实例化、隐式实例化

    讨论这三者的区别我们要先认识函数模板 函数模板是C 新增的功能 他会创建一个通用的函数以支持多种不同类型的形参 避免函数体的重复设计 在我们需要重复用到某一段代码但是需要处理不同类型的参数时 使用函数模板是很方便的一个手段他最大的特点是把数
  • 列可以设置 :formatter,对列的值进行处理

    需要对数字进行处理
  • 美图2022年财报:AIGC引领创新,多重驱动共振向上

    2022年是美图发展的关键之年 在数字化趋势加速的背景下 美图通过持续优化用户体验和不断拓展业务领域边界 进一步巩固了其行业竞争优势 近日 美图公司发布2022财年年度业绩 在收入 用户 创新等方面均取得了令人瞩目的成绩 展现了强劲的发展势
  • VMware导入vmdk文件(亲测有效)

    场景 从别的地方拷贝了一个系统镜像 后缀是vmdk格式 现在演示如何导入到本地 操作步骤 打开vmware 点击文件 新建虚拟机 2 选择自定义 高级 下一步 3 硬件兼容性 默认选择最新的行 因为和本地安装的vmware版本有关 这里演示
  • Fiddler笔记(一)

    个人学习笔记 整理不易 有帮助点个赞 笔记目录 学习笔记目录 pytest和unittest airtest weixin 42717928的博客 CSDN博客 目录 一 简单了解 二 下载安装 三 工具使用 四 HTTP协议报文结构 1
  • 【操作系统】Linux常用基础和高级命令

    目录 一 Linux内核 二 Linux发行版 操作系统 三 Linux终端 三 Linux终端命令 1 命令格式 2 常用基础命令 1 查看目录命令 2 切换目录命令 3 创建文件和目录命令 4 删除文件和目录命令 5 复制文件和目录命令
  • 使用LeNet实现图像分类任务

    本篇的主要内容是解析一下使用MindSpore深度学习框架训练LeNet网络对Mnist数据集进行分类 首先我给大家展示出本篇内容的一个示意图 帮助大家更直观的看到训练过程的一个重要步骤 如图所示 其中1 2 3 表示训练过程中的次序 下面
  • RSA密码原理详解及算法实现(六步即可掌握)

    一 RSA算法概述 rsa算法是一种非对称加密算法 其安全性是建立在大素数难以分解的基础上的 即将两个大素数相乘十分容易 但想对其乘积进行分解却很困难 所以可以将其乘积公开作为加密密钥 二 RSA算法设计理念 根据数论 寻求两个大素数比较简
  • mysql默认值语句

    添加新字段 并设置默认值 alter table test tb add column col3 varchar 20 not null DEFAULT abc 修改原有默认值 alter table test tb alter colum
  • springboot整合logback

    1 在springboot项目resource目录下 创建一个 logback spring xml 文件 2 在logback spring xml文件中添加内容
  • vscode代码统计

    1 安装插件 在vscode界面左侧 点击图中所示的菜单项 搜索Vscode counter 2 使用插件统计代码 点击顶部 View 菜单 gt 在下拉选项中选择第一项 Command Palette gt 工作区选择VscodeCoun
  • 循环机换变速箱油教程_循环机更换自动变速箱油,需要更换的车友可以先了解一下...

    前言 了解汽车知识 让每一位车主维修保养不花冤枉钱 胖哥闲置快半年的自动变速箱循环机 今天终于再次开张了 说起这玩意一年也用不了几次 没有还真不行 自动变速箱油一般6万公里更换 具体大家可根据自己的 车辆保养手册规定 自动变速箱油更换有三种
  • ffmpeg视频裁剪

    需要注意 ffmpeg 命令 s 指定了宽高后 如果为奇数宽高 101 101 则裁剪后的视频无法正常播放 不加 s则ffmpeg自动 1处理 private void cutVideo throws Exception try Strin