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

}

}

}

相关推荐
2301_7965125237 分钟前
Rust编程学习 - 如何利用代数类型系统做错误处理的另外一大好处是可组合性(composability)
java·学习·rust
清水1 小时前
Spring Boot企业级开发入门
java·spring boot·后端
一个不称职的程序猿1 小时前
高并发场景下的缓存利器
java·缓存
2301_801252221 小时前
Tomcat的基本使用作用
java·tomcat
lkbhua莱克瓦241 小时前
Java基础——常用算法3
java·数据结构·笔记·算法·github·排序算法·学习方法
麦麦鸡腿堡2 小时前
Java_TreeSet与TreeMap源码解读
java·开发语言
教练、我想打篮球2 小时前
05 kafka 如何存储较大数据记录
java·kafka·record
uesowys2 小时前
华为OD算法开发指导-简易内存池
java·算法·华为od
gladiator+2 小时前
Java中的设计模式------策略设计模式
java·开发语言·设计模式
期待のcode2 小时前
Dockerfile镜像构建
java·docker·容器