当前位置: 首页 > news >正文

Java任意视频转MP4

Java任意视频转MP4

在做视频上传功能时候,用户可能上传不同类型的视频文件,导致需要特定播放器才能播放,为了解决视频格式统一问题需要把视频转码一下 ,转换成统一的MP4格式。我们直接使用第三方工具 FFmpeg

FFmpeg介绍

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案
总之使用就可完美 实现 视频转换。

环境准备
名称    内容说明
官网下载FFmpeg    官网:http://ffmpeg.org/download.html
项目导入依赖    可以去maven仓库搜索 https://mvnrepository.com/search?q=net.bramp.ffmpeg 各版本

这个0.7.0是最新版
    <dependency>
        <groupId>net.bramp.ffmpeg</groupId>
        <artifactId>ffmpeg</artifactId>
        <version>0.7.0</version>
    </dependency>
    
下载FFmpeg

网站地址:http://ffmpeg.org/download.html

windows 版解压使用
将下载好的文件解压到一个常用的目录下

测试案例代码

import net.bramp.ffmpeg.FFmpeg;
import net.bramp.ffmpeg.FFmpegExecutor;
import net.bramp.ffmpeg.FFprobe;
import net.bramp.ffmpeg.builder.FFmpegBuilder;

/**
 * @Date: 2023/9/22 18:58
 * @Description: ffmpeg测试案例
 */
public class TestFFmpeg {

    public static void main(String[] args) throws Exception {
        System.err.println("---------开始执行----------------");

        //将下载后并解压的 "ffmpeg.exe,ffprobe.exe" 执行文件路径填写进去
        FFmpeg ffmpeg = new FFmpeg("D:/install/ffmpeg-master-latest-win64-gpl/bin/ffmpeg.exe");
        FFprobe ffprobe = new FFprobe("D:/install/ffmpeg-master-latest-win64-gpl/bin/ffprobe.exe");
        FFmpegBuilder builder = new FFmpegBuilder()
                // 源视频文件
                .setInput("D:/ffmpeg/video222.mov")
                // 目标视频文件
                .addOutput("D:/ffmpeg/video222.mp4")
                .done();

        FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);
        executor.createJob(builder).run();

        System.err.println("---------执行完毕----------------");
    }

}

Linux 版解压使用

注:方式同上,唯一不同的就是Linux中的路径不同和没有".exe"

http://www.lryc.cn/news/225743.html

相关文章:

  • flutter实践:慎用Expanded
  • 华为防火墙vrrp+hrp双机热备负载分担(两端为交换机)
  • 欧拉角(横滚角、俯仰角、偏航角)、旋转矩阵、四元数的转换与解决万向节死锁
  • Java Post请求参数格式为XML
  • Windows 安装 JDK 8 和 JDK 17 和多版本JDK切换
  • SpringData、SparkStreaming和Flink集成Elasticsearch
  • 中国电子学会2023年09月份青少年软件编程Python等级考试试卷六级真题(含答案)
  • 基于STM32设计的智能水母投喂器(华为云IOT)
  • 合成数据加速机器视觉学习
  • 物业管理服务预约小程序的效果如何
  • ORA-00257: Archiver error. Connect AS SYSDBA only until resolved错误解决
  • backbone:从AlexNet到...(持续补充ing)
  • FiRa标准——MAC实现(二)
  • oracle中分组函数LISTAGG
  • 深度学习pytorch之hub模块
  • LeetCode 2258. 逃离火灾:BFS
  • C# PaddleInference.PP-HumanSeg 人像分割 替换背景色
  • Java 变量初始化的两种方式和优缺点比较
  • 15.三数之和
  • 竞赛选题 深度学习疲劳驾驶检测 opencv python
  • PROFINET和UDP、MODBUS-RTU通信速度对比实验
  • CSS3 多媒体查询、网格布局
  • SpringBoot基础(九)-- 配置文件优先级
  • C++ static关键字
  • Anaconda Powershell Prompt和Anaconda Prompt的区别
  • 关于tcp发送成功但对端无法接收情况的思考
  • 01-解码-H264转YUV
  • keepalived+Nginx+邮件
  • CMakeCache.txt有什么用
  • ZYNQ_project:key_breath