使用开源项目JAVAE2 进行视频格式转换
程序员文章站
2022-07-26 10:58:06
使用开源项目javae 进行视频格式转换javae简介:jave (java音频视频编码器)库是ffmpeg项目的java包装器。开发人员可以利用jave2将音频和视频文件从一种格式转换为另一种格式。...
使用开源项目javae 进行视频格式转换
javae简介:
jave (java音频视频编码器)库是ffmpeg项目的java包装器。开发人员可以利用jave2将音频和视频文件从一种格式转换为另一种格式。在示例可以转换成一个avi文件mg,您可以更改一个divx视频(youtube) flash flv,您可以转换wav音频文件到mp3和ogg vorbis,您可以分离和转换音频和视频跟踪代码,您可以调整视频,改变他们的大小和比例等。jave2还支持许多其他格式、容器和操作。
官网地址:
github地址:
maven地址:
快速上手
导包
<dependency> <groupid>ws.schild</groupid> <artifactid>jave-all-deps</artifactid> <version>2.4.2</version> </dependency>
工具类
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<string, integer> 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 getvideoinfoandgeneratethumbnail(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("原视频编码:" + videoinfo.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); 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 视频格式转换的资料请关注其它相关文章!