Java 实现视频Mov转Mp4

package useful;

import java.io.File;

import java.io.IOException;

import it.sauronsoftware.jave.AudioAttributes;

import it.sauronsoftware.jave.Encoder;

import it.sauronsoftware.jave.EncodingAttributes;

import it.sauronsoftware.jave.VideoAttributes;

import net.bramp.ffmpeg.FFmpeg;

import net.bramp.ffmpeg.FFmpegExecutor;

import net.bramp.ffmpeg.FFprobe;

import net.bramp.ffmpeg.builder.FFmpegBuilder;

//import ws.schild.jave.Encoder;

//import ws.schild.jave.MultimediaObject;

//import ws.schild.jave.encode.AudioAttributes;

//import ws.schild.jave.encode.EncodingAttributes;

//import ws.schild.jave.encode.VideoAttributes;

public class MovToMp4 {

public static void main(String[] args) {

movToMp4();

}

//https://codeantenna.com/a/QFoYfQUJXV

// <dependency>

// <groupId>it.sauronsoftware.jave</groupId>

// <artifactId>jave</artifactId>

// <version>1.0.2</version>

// </dependency>

public void movToMp4_1() {

File source = new File("D:/Handle_the_loan_in_sake2_with_maker_approved_2023-11-08_17-34-20.mov");

File target = new File("D:/Web1.mp4");

try {

AudioAttributes audio = new AudioAttributes();

audio.setCodec("libmp3lame");

audio.setBitRate(new Integer(56000));

audio.setChannels(new Integer(1));

audio.setSamplingRate(new Integer(22050));

VideoAttributes video = new VideoAttributes();

video.setCodec("mpeg4");

video.setBitRate(new Integer(800000));

video.setFrameRate(new Integer(15));

EncodingAttributes attrs = new EncodingAttributes();

attrs.setFormat("mp4");

attrs.setAudioAttributes(audio);

attrs.setVideoAttributes(video);

Encoder encoder = new Encoder();

encoder.encode(source, target, attrs);

} catch (Exception e) {

e.printStackTrace();

}

System.out.println("Finish");

}

//ffmpeg转换视频

//https://www.cnblogs.com/lccsdncnblogs/p/17723211.html

// <dependency>

// <groupId>net.bramp.ffmpeg</groupId>

// <artifactId>ffmpeg</artifactId>

// <version>0.7.0</version>

// </dependency>

public static void movToMp4() {

System.err.println("---------开始执行----------------");

String path1 = "D:/Handle_the_loan_in_sake2_with_maker_approved_2023-11-08_17-34-20.mov";

String path2 = "D:/Web2.mp4";

//将下载后并解压的 "ffmpeg.exe,ffprobe.exe" 执行文件路径填写进去

FFmpeg ffmpeg;

try {

ffmpeg = new FFmpeg("D:/Project/Program/ffmpeg-master-latest-win64-gpl-shared/bin/ffmpeg.exe");

FFprobe ffprobe = new FFprobe("D:/Project/Program/ffmpeg-master-latest-win64-gpl-shared/bin/ffprobe.exe");

FFmpegBuilder builder = new FFmpegBuilder()

// 源视频文件

.setInput(path1)

// 目标视频文件

.addOutput(path2)

.done();

FFmpegExecutor executor = new FFmpegExecutor(ffmpeg, ffprobe);

executor.createJob(builder).run();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

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

}

//

// <!-- mov 转换 mp4 -->

// <dependency>

// <groupId>ws.schild</groupId>

// <artifactId>jave-all-deps</artifactId>

// <version>3.0.1</version>

// </dependency>

//https://www.codenong.com/cs111037890/

public static void movToMp4_2(){

File source = new File("D:\\mov视频文件\\视频\\视频\\IMG_0604.MOV");

File target = new File("D:\\mov视频文件\\视频\\视频\\IMG_0604-target.mp4");

try {

ws.schild.jave.encode.AudioAttributes audio = new ws.schild.jave.encode.AudioAttributes();

audio.setCodec("libmp3lame");

audio.setBitRate(new Integer(800000));//设置比特率

audio.setChannels(new Integer(1));//设置音频通道数

audio.setSamplingRate(new Integer(44100));//设置采样率

ws.schild.jave.encode.VideoAttributes video = new ws.schild.jave.encode.VideoAttributes();

video.setCodec("mpeg4");

// video.setCodec("libx264");

video.setBitRate(new Integer(3200000));

video.setFrameRate(new Integer(15));

ws.schild.jave.encode.EncodingAttributes attrs = new ws.schild.jave.encode.EncodingAttributes();

attrs.setOutputFormat("mp4");

attrs.setAudioAttributes(audio);

attrs.setVideoAttributes(video);

ws.schild.jave.Encoder encoder = new ws.schild.jave.Encoder();

encoder.encode(new ws.schild.jave.MultimediaObject(source), target, attrs);

} catch (Exception e) {

e.printStackTrace();

}

}

}

相关推荐
想用offer打牌16 小时前
一站式了解Spring AI Alibaba的流式输出
java·人工智能·后端
Lonely丶墨轩16 小时前
从登录入口窥见架构:一个企业级双Token认证系统的深度拆解
java·数据库·sql
掘根18 小时前
【仿Muduo库项目】EventLoop模块
java·开发语言
信码由缰18 小时前
Java 中的 AI 与机器学习:TensorFlow、DJL 与企业级 AI
java
沙子迷了蜗牛眼18 小时前
当展示列表使用 URL.createObjectURL 的创建临时图片、视频无法加载问题
java·前端·javascript·vue.js
ganshenml18 小时前
【Android】 开发四角版本全解析:AS、AGP、Gradle 与 JDK 的配套关系
android·java·开发语言
我命由我1234518 小时前
Kotlin 运算符 - == 运算符与 === 运算符
android·java·开发语言·java-ee·kotlin·android studio·android-studio
小途软件18 小时前
ssm327校园二手交易平台的设计与实现+vue
java·人工智能·pytorch·python·深度学习·语言模型
alonewolf_9918 小时前
Java类加载机制深度解析:从双亲委派到热加载实战
java·开发语言
追梦者12318 小时前
springboot整合minio
java·spring boot·后端