JAVAE2项目如何实现对视频格式进行转换

  介绍

这期内容当中小编将会给大家带来有关JAVAE2项目如何实现对视频格式进行转换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

<强> JAVAE简介:

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

官网地址:https://www.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

<强>快速上手

导包

& lt; dependency>   & lt; groupId> ws.schild   & lt; artifactId> jave-all-deps   & lt; version> 2.4.2   & lt;/dependency>

<强>工具类

包com.example.javae2.util;
  
  
  进口cn.hutool.core.util.ObjectUtil;
  进口ws.schild.jave。*;
  
  进口java.io.File;
  进口java.nio.file.Paths;
  进口java.util.HashMap;
  进口java.util.Map;
  
  公开课VideoUtils {
  
  
  
  私有静态Map<字符串,Integer>sizeBitRateMap;
  
  静态{
  ,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);
  }
  
  
  公共静态void main (String [] args) {
  VideoUtils VideoUtils=new VideoUtils ();
  videoUtils。convertVideoToMP4(新文件(“C: \ \ temp \ \ javae2 \ \ 0001。哔哩哔哩——颈椎操(流畅版].flv"),“C: \ \ temp \ \ javae2 \ \ 0001。哔哩哔哩——颈椎操(流畅版].mp4");//videoUtils。getVideoInfoAndGenerateThumbnail(新文件(“C: \ \ \ \ temp \ \ \ \ javae2 \ \ \ \ 0001。哔哩哔哩——颈椎操(流畅版].mp4"),“C: \ \ \ \ temp \ \ \ \ javae2 \ \ \ \ 0001。哔哩哔哩——颈椎操(流畅版]. . jpg");
  
  
  }/* *
  *截取视频的一针作为封面图
  *
  * @param文件视频文件
  * @param thumbnailPath截取图片保存路径
  * @return
  */公共空间getVideoInfoAndGenerateThumbnail(文件文件、字符串thumbnailPath) {
  MultimediaObject MultimediaObject=new MultimediaObject(文件);
  尝试{
  MultimediaInfo信息=multimediaObject.getInfo ();
  VideoInfo VideoInfo=info.getVideo ();
  logger.info(“获取视频时长:{}“,info.getDuration ()/1000);
  如果(ObjectUtil.isNotNull (videoInfo)) {
  VideoSize大?videoInfo.getSize ();
  int宽度=size.getWidth ();
  int高度=size.getHeight ();
  logger.info(“视频宽:{}视频高{}“,宽度、高度);
  logger.info(“比特率:{}“,videoInfo.getBitRate ()/1000);
  ScreenExtractor ScreenExtractor=new ScreenExtractor ();
  目标=新的文件(thumbnailPath);//截取视频作为图片保存/*
  *第一个参数视频源文件信息类
  *第二个参数截取的宽度
  *第三个参数截取的高度
  *第四个参数截取的是那一帧
  *第五个参数是截取的图片质量数日至31日字越小质量越高
  *
  * */screenExtractor。renderOneImage (multimediaObject size.getWidth (), size.getHeight(), 3000年,目标,31);
  
  }
  }捕捉(EncoderException e) {
  e.printStackTrace ();
  }
  
  }/* *
  * @param源源文件
  * @param定位路径转码后的路径
  */公共空间convertVideoToMP4(文件源字符串定位路径){
  MultimediaObject MultimediaObject=new MultimediaObject(源);
  尝试{
  MultimediaInfo信息=multimediaObject.getInfo ();
  VideoInfo VideoInfo=info.getVideo ();
  VideoSize大?videoInfo.getSize ();
  System.out.println(“原视频宽:“+ size.getWidth ());
  System.out.println(“原视频高:“+ size.getHeight ());
  System.out.println(“原视频比特率:“+ videoInfo.getBitRate ()/1000);
  System.out.println(“原视频编码:“+ videoInfo.getDecoder ());
  
  整数比特率=sizeBitRateMap.get (size.getWidth () +“*”;+ size.getHeight ());
  VideoAttributes视频=new VideoAttributes ();//设置视频编码
  video.setCodec (“h364");
  
  如果(ObjectUtil.isNotNull(比特率)){//设置比特率
  视频。setBitRate(比特率* 1000);
  }
  目标=新的文件(定位路径);
  AudioAttributes音频=new AudioAttributes ();//设置编码器名称
  audio.setCodec (“aac");
  EncodingAttributes attrs=new EncodingAttributes ();//设置转换后的格式
  attrs.setFormat (“mp4");
  attrs.setAudioAttributes(音频);
  attrs.setVideoAttributes(视频);
  编码器编码器=new编码器();
  编码器。编码(目标,multimediaObject attrs);//花费毫秒数
  
  MultimediaObject multimediaObjectOfter=new MultimediaObject (Paths.get(定位路径).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 ());
  
  }捕捉(EncoderException e) {
  e.printStackTrace ();
  }
  }
  
  
  
  }

JAVAE2项目如何实现对视频格式进行转换