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();

}

}

}

相关推荐
小小寂寞的城27 分钟前
JAVA观察者模式demo【设计模式系列】
java·观察者模式·设计模式
探索java1 小时前
Java并发编程中的StampedLock详解:原理、实践与性能优化
java·stampedlock
界面开发小八哥1 小时前
「Java EE开发指南」如何用MyEclipse将Java项目转换为Web项目?
java·ide·java-ee·eclipse·开发工具·myeclipse
pobu1681 小时前
aksk前端签名实现
java·前端·javascript
一个天蝎座 白勺 程序猿2 小时前
飞算JavaAI进阶:重塑Java开发范式的AI革命
java·开发语言·人工智能
前端 贾公子2 小时前
tailwindCSS === 使用插件自动类名排序
java·开发语言
没有bug.的程序员2 小时前
JAVA面试宝典 -《Spring Boot 自动配置魔法解密》
java·spring boot·面试
hnlucky2 小时前
《Nginx + 双Tomcat实战:域名解析、静态服务与反向代理、负载均衡全指南》
java·linux·服务器·前端·nginx·tomcat·web
hnlucky2 小时前
同时部署两个不同版本的tomcat要如何配置环境变量
java·服务器·http·tomcat·web