我是靠谱客的博主 淡定哈密瓜,最近开发中收集的这篇文章主要介绍jave2 工具类的使用,使用信息的获取以及AVI转换为MP4,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

jave2 工具类的使用,使用信息的获取以及AVI转换为MP4

使用手册:http://www.sauronsoftware.it/projects/jave/manual.php
github地址: https://github.com/a-schild/jave2https://github.com/a-schild/jave2

maven仓库坐标:

<dependency>
 <groupId>ws.schild</groupId>
 <artifactId>jave-all-deps</artifactId>
 <version>2.7.3</version>
</dependency>
package com.XXX;

import ws.schild.jave.*;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.nio.channels.FileChannel;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;

import static org.hibernate.validator.internal.util.Contracts.assertTrue;

/**
 * @Description: 视频文件的工具类
 */ 
public class VideoUtils {
	/**
	 * 测试功能
	 */ 
    public static void main(String[] args){
        Map<String, Object> voideMsg = getVideoMsg("C:\Users\权\Desktop\test.avi");
        System.out.println(voideMsg);
        videoConvertMP4("C:\Users\权\Desktop\test.avi", "C:\Users\权\Desktop\testMP4.mp4");
        Map<String, Object> voideMsg2 = getVideoMsg("C:\Users\权\Desktop\testMP4.mp4");
        System.out.println(voideMsg2);
    }

    /**
     * @Description: 将视频转换为MP4格式  未开发完成
     *
     * @param path  要转换的文件路径
     * @param targetPath  要保存的文件路径 ,如: C:Users权DesktoptestMP4.mp4
     * @return 返回值 转化后的视频的路径
     */
    public static void videoConvertMP4(String path, String targetPath) {
        ConvertProgressListener listener = new ConvertProgressListener();
        try {
            File source = new File(path);
            File target = new File(targetPath);
            if (target.exists())
            {
                target.delete();
            }
            //设置音频属性
            AudioAttributes audio = new AudioAttributes();
            audio.setCodec("aac");
            audio.setBitRate(128000);
            audio.setSamplingRate(44100);
            audio.setChannels(2);

            // 设置视频属性
            VideoAttributes video = new VideoAttributes();
            video.setCodec("libx264");
            video.setBitRate(4000000);
            video.setFrameRate(15);

            // 设置编码格式
            EncodingAttributes attrs = new EncodingAttributes();
            attrs.setFormat("mp4");
            attrs.setAudioAttributes(audio);
            attrs.setVideoAttributes(video);

            // 进行编码,输出到本地
            Encoder encoder = new Encoder();
            encoder.encode(new MultimediaObject(source), target, attrs,listener);
            assertTrue(target.exists(), "输出文件丢失");
        } catch (Exception ex) {
            ex.printStackTrace();
            System.out.println("视频转换失败");
        }
    }

   /**
    * @Description: 获取视频文件的信息
    *
    * @param path 文件路径
    * @return map 保存视频文件的信息,时间,宽,高,大小,格式,
    */
    public static Map<String, Object> getVideoMsg(String path){
        Map<String, Object> map = new HashMap<String, Object>();
        File file = new File(path);
        FileChannel fc= null;
        String size = "";

        if(file != null){
            try {
                MultimediaObject object = new MultimediaObject(file);
                MultimediaInfo m = object.getInfo();
                long ls = m.getDuration(); // 毫秒
                map.put("millisecond", ls);
                map.put("timestamp", ls);
                // 格式化的时间 如 01:30:37
                DecimalFormat format=new DecimalFormat("00");
                String time = format.format(ls/3600000)+ ":" +format.format(ls/60000)+":"+format.format(((ls)/1000 - ls/60000 * 60));
                map.put("time", time);
                map.put("localtime", ls/60000+"分"+((ls)/1000 - ls/60000 * 60)+"秒"); // 本地时间:2分37秒
                FileInputStream fis = new FileInputStream(file);
                fc= fis.getChannel();
                BigDecimal fileSize = new BigDecimal(fc.size());
                size = fileSize.divide(new BigDecimal(1048576), 2, RoundingMode.HALF_UP) + "MB";
                map.put("height", m.getVideo().getSize().getHeight());
                map.put("width", m.getVideo().getSize().getWidth());
                map.put("size", size);
                map.put("format", m.getFormat());
            }catch (Exception e) {
                e.printStackTrace();
            }finally {
                if (null!=fc){
                    try {
                        fc.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return map;
    }
}

/**
 * @Description: 视频转换时的监听器
 *
 */
class ConvertProgressListener implements EncoderProgressListener {

    public ConvertProgressListener() {
        //code
    }

    public void message(String m) {
        //code
    }

    public void progress(int p) {
        //Find %100 progress
        double progress = p / 1000.00;
        System.out.println("转换进度:"+progress*100+"%");
    }

    public void sourceInfo(MultimediaInfo m) {
        //code
    }
}



最后

以上就是淡定哈密瓜为你收集整理的jave2 工具类的使用,使用信息的获取以及AVI转换为MP4的全部内容,希望文章能够帮你解决jave2 工具类的使用,使用信息的获取以及AVI转换为MP4所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部