使用开源项目JAVAE2 进行视频格式转换

网友投稿 407 2022-11-14


使用开源项目JAVAE2 进行视频格式转换

使用开源项目javaE 进行视频格式转换

JAVAE简介:

JAVE (Java音频视频编码器)库是ffmpeg项目的Java包装器。开发人员可以利用JAVE2将音频和视频文件从一种格式转换为另一种格式。在示例可以转换成一个AVI文件MG,您可以更改一个DivX视频(youtube) Flash FLV,您可以转换WAV音频文件到MP3和Ogg Vorbis,您可以分离和转换音频和视频跟踪代码,您可以调整视频,改变他们的大小和比例等。JAVE2还支持许多其他格式、容器和操作。

官网地址:https://mvnjar.com/ws.schild/jave-all-deps/2.4.2/detail.html

github地址:https://github.com/a-schild/jave2/tree/master/jave-example

maven地址:https://mvnrepository.com/artifact/ws.schild/jave-all-deps

快速上手

导包

ws.schild

jave-all-deps

2.4.2

工具类

package com.example.javae2.util;

import cn.hutool.core.util.ObjectUtil;

import ws.schild.jave.*;

import java.io.File;

import java.nio.file.Paths;

import java.util.HashMap;

import java.util.Map;

public class VideoUtils {

private static Map sizeBitRateMap;

static {

sizeBitRateMap = new HashMap<>();

sizeBitRateMap.put("1920*1080", 4992);

sizeBitRateMap.put("1280*720", 2496);

sizeBitRateMap.put("1024*576", 1856);

sizeBitRateMap.put("840*480", 1216);

sizeBitRateMap.put("768*432", 1088);

sizeBitRateMap.put("640*360", 896);

sizeBitRateMap.put("424*240", 576);

}

public static void main(String[] args) {

VideoUtils videoUtils = new VideoUtils();

videoUtils.convertVideoToMP4(new File("C:\\temp\\javae2\\0001.哔哩哔哩-颈椎操[流畅版].flv"),"C:\\temp\\javae2\\0001.哔哩哔哩-颈椎操[流畅版].mp4");

//videoUtils.getVideoInfoAndGenerateThumbnail(new File("C:\\\\temp\\\\javae2\\\\0001.哔哩哔哩-颈椎操[流畅版].mp4"), "C:\\\\temp\\\\javae2\\\\0001.哔哩哔哩-颈椎操[流畅版]..jpg");

}

/**

* 截取视频的一针作为封面图

*

* @param file 视频文件

* @param thumbnailPath 截取图片保存路径

* @return

*/

public void getVideoInfoAndGeneratehttp://Thumbnail(File file, String thumbnailPath) {

MultimediaObject multimediaObject = new MultimediaObject(file);

try {

MultimediaInfo info = multimediaObject.getInfo();

VideoInfo videoInfo = info.getVideo();

logger.info("获取视频时长:{}", info.getDuration() / 1000);

if (ObjectUtil.isNotNull(videoInfo)) {

VideoSize size = videoInfo.getSize();

int width = size.getWidth();

int height = size.getHeight();

logger.info("视频宽:{} 视频高{}", width, height);

logger.info("比特率:{}", videoInfo.getBitRate() / 1000);

ScreenExtractor screenExtractor = new ScreenExtractor();

File target = new File(thumbnailPath);

//截取视频作为图片保存

/*

*第一个参数 视频源文件信息类

* 第二个参数 截取的宽度

* 第三个参数 截取的高度

* 第四个参数 截取的是那一帧

* 第五个参数是 截取的图片质量 1-31 数字越小质量越高

*

**/

screenExtractor.renderOneImage(multimediaObject, size.getWidth(), size.getHeight(), 3000, target, 31);

}

} catch (EncoderException e) {

e.printStackTrace();

}

}

/**

* @param source 源文件

* @param targetPath 转码后的路径

*/

public void convertVideoToMP4(File source, String targetPath) {

MultimediaObject multimediaObject = new MultimediaObject(source);

try {

MultimediaInfo info = multimediaObject.getInfo();

VideoInfo videoInfo = info.getVideo();

VideoSize size = videoInfo.getSize();

System.out.println("原视频宽:" + size.getWidth());

System.out.println("原视频高:" + size.getHeight());

System.out.println("原视频比特率:" + videoInfo.getBitRate() / 1000);

System.out.println("原视频编码:" + videoqYjFkWCEInfo.getDecoder());

Integer bitRate = sizeBitRateMap.get(size.getWidth() + "*" + size.getHeight());

VideoAttributes video = new VideoAttributes();

//设置视频编码

video.setCodec("h264");

if (ObjectUtil.isNotNull(bitRate)) {

//设置比特率

video.setBitRate(bitRate * 1000);

}

File target = new File(targetPath);

AudioAttributes audio = new AudioAttributes();

//设置编码器名称

audio.setCodec("aac");

EncodingAttributes attrs = new EncodingAttributes();

//设置转换后的格式

attrs.setFormat("mp4");

attrs.setAudioAttributes(audio);

attrs.setVideoAttributes(video);

http:// Encoder encoder = new Encoder();

encoder.encode(multimediaObject, target, attrs);

//花费毫秒数

MultimediaObject multimediaObjectOfter = new MultimediaObject(Paths.get(targetPath).toFile());

MultimediaInfo info1 = multimediaObjectOfter.getInfo();

VideoInfo video1 = info1.getVideo();

VideoSize size1 = video1.getSize();

System.out.println("转换后视频宽:" + size1.getWidth());

System.out.println("转换后视频高:" + size1.getHeight());

System.out.println("转换后视频比特率:" + video1.getBitRate() / 1000);

System.out.println("转换后视频编码:" + video1.getDecoder());

} catch (EncoderException e) {

e.printStackTrace();

}

}

}

效果 (flv 转MP4)

以上就是使用开源项目JAVAE 进行视频格式转换的详细内容,更多关于Java 视频格式转换的资料请关注我们其它相关文章!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:springboot如何配置定时任务
下一篇:深入浅出Java8中parallelStream的使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~