Java将视频文件avi/rmvb等格式转换成mp4

目前已验证支持avi,flv,mpg,mpeg,mov,rmvb,asf,ogv等视频文件格式转成mp4,至于mp4转成其他类型,目前只验证了一种mp4->mov, 感兴趣的小伙伴可以验证下mp4转成其他类型。

首先引入maven依赖

        <dependency>
			<groupId>org.bytedeco</groupId>
			<artifactId>javacv</artifactId>
			<version>1.5.10</version>
		</dependency>

		<dependency>
			<groupId>org.bytedeco</groupId>
			<artifactId>javacv-platform</artifactId>
			<version>1.5.10</version>
		</dependency>

工具类和main方法:

package com.person.ai.config;


import lombok.extern.slf4j.Slf4j;
import org.bytedeco.javacv.*;

@Slf4j
public class CovertVideoUtils {

    /**
     *
     * @param inputPath 源文件
     * @param outputPath 目标文件
     * @param format 生成目标文件的格式
     * @throws FrameRecorder.Exception 异常类
     */
    public static void convert(String inputPath, String outputPath, String format) throws FrameRecorder.Exception {
       try {
           FFmpegFrameGrabber frameGrabber = new FFmpegFrameGrabber(inputPath);
           frameGrabber.start();

           FFmpegFrameRecorder frameRecorder = new FFmpegFrameRecorder(outputPath, frameGrabber.getImageWidth(), frameGrabber.getImageHeight(), frameGrabber.getAudioChannels());
           frameRecorder.setFormat(format);
           frameRecorder.setFrameRate(frameGrabber.getFrameRate());
           frameRecorder.setSampleRate(frameGrabber.getSampleRate());
           frameRecorder.start();

           Frame frame;
           while ((frame = frameGrabber.grabFrame()) != null) {
               frameRecorder.record(frame);
           }

           frameRecorder.stop();
           frameGrabber.stop();
       }
       catch (FrameGrabber.Exception e) {
           log.error("convert failed", e);
       }
    }


    public static void main(String[] args) throws FrameRecorder.Exception {
        CovertVideoUtils.convert("E:/video/output4.mp4", "E:/video/output6.mov", "mov");
    }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 中,可以使用 FFmpeg 来实现 avimp4 的互相转换。FFmpeg 是一个开源的音视频处理库,可以在多个平台上运行。 以下是一个简单的示例代码,演示了如何使用 FFmpeg 在 Java实现 avimp4 的互相转换: ```java import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.FFmpegFrameRecorder; public class VideoConverter { public static void aviToMp4(String inputFilePath, String outputFilePath) { try { FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFilePath); grabber.start(); FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFilePath, grabber.getImageWidth(), grabber.getImageHeight()); recorder.setFormat("mp4"); recorder.start(); while (true) { var frame = grabber.grabImage(); if (frame == null) { break; } recorder.record(frame); } recorder.stop(); grabber.stop(); } catch (Exception e) { e.printStackTrace(); } } public static void mp4ToAvi(String inputFilePath, String outputFilePath) { try { FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFilePath); grabber.start(); FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFilePath, grabber.getImageWidth(), grabber.getImageHeight()); recorder.setFormat("avi"); recorder.start(); while (true) { var frame = grabber.grabImage(); if (frame == null) { break; } recorder.record(frame); } recorder.stop(); grabber.stop(); } catch (Exception e) { e.printStackTrace(); } } } ``` 使用示例: ```java VideoConverter.aviToMp4("input.avi", "output.mp4"); VideoConverter.mp4ToAvi("input.mp4", "output.avi"); ``` 需要注意的是,这个示例代码只是演示了如何使用 FFmpeg 进行 avimp4 的互相转换。实际应用中,还需要考虑更多的问题,比如参数设置、异常处理、性能优化等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值