欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用开源项目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)

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

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