关于使用Java视频转码的使用(ffmpeg)

最近公司有个项目要求使用将视频文件用H5展现出来,但是视频文件是avi格式的,而使用h5的viedo标签只能展现mp4格式同时编码方式是H264的,那么问题来了需要转码.

找了好多资料,有的是电脑上按照ffmpeg这个东西,然后写命令转码。但是后面我又从gitee上找到一个开源的Jave2(https://github.com/a-schild/jave2)版本的,之前找到的是jave1版本的,地址(http://www.sauronsoftware.it/projects/jave/manual.php).


使用jave2需要选择对应得环境,同时要把依赖加进去,我本地是windows64位的,加载依赖

<dependency>

    <groupId>ws.schild</groupId>

    <artifactId>jave-core</artifactId>

    <version>2.5.0</version>

</dependency>

<dependency>

    <groupId>ws.schild</groupId>

    <artifactId>jave-nativebin-win64</artifactId>

    <version>2.5.0</version>

</dependency>


各个环境要选择好,不然会报错在转换的时候,

下面是我写的将avi转换成mp4的Java

/**

* Project Name:springboot-salary

* File Name:VideoConvertMain.java

* Package Name:com.sundy

* Date:2019年7月4日上午8:02:56

* Copyright (c) 2019, wangkui5@auxgroup.com All Rights Reserved.

*

*/ 


package com.sundy;

import java.io.File;

import ws.schild.jave.AudioAttributes;

import ws.schild.jave.Encoder;

import ws.schild.jave.EncoderException;

import ws.schild.jave.EncodingAttributes;

import ws.schild.jave.InputFormatException;

import ws.schild.jave.MultimediaInfo;

import ws.schild.jave.MultimediaObject;

import ws.schild.jave.VideoAttributes;

import ws.schild.jave.VideoSize;

/**

* ClassName:VideoConvertMain <br/>

* Date:    2019年7月4日 上午8:02:56 <br/>

* @作者  sundy.wangkui

* @描述 

* @版本 1.0.0

*     

*/

public class VideoConvertMain {

public static void main(String[] args) throws Exception, EncoderException, Exception {

String sourcePath="D:\\avifile\\20190614142215.avi";

String targetPath="D:\\avifile\\test0010.mp4";

String demoPath="D:\\avifile\\demo.mp4";

  File source=new File(sourcePath);

File target=new File(targetPath);

File demoPathFile=new File(demoPath);

/*

MultimediaObject instance = new MultimediaObject(demoPathFile);

    MultimediaInfo result = instance.getInfo();

    System.out.println(result.getVideo().getDecoder());

    Encoder encoder = new Encoder();

        String[] encoderResult = encoder.getVideoEncoders();


        if(encoderResult!=null && encoderResult.length>0) {

        for(int i=0;i<encoderResult.length;i++) {

        System.out.println(encoderResult[i]);

        }

        }*/

test01(source,target);

}

public  static void test01(File source,File target) throws Exception, InputFormatException, EncoderException {

    AudioAttributes audio = new AudioAttributes();

audio.setCodec("aac");

audio.setBitRate(new Integer(64000));

audio.setChannels(new Integer(2));

audio.setSamplingRate(new Integer(22050));

VideoAttributes video = new VideoAttributes();

video.setCodec("libx264");

video.setBitRate(new Integer(160000));

video.setFrameRate(new Integer(15));

video.setSize(new VideoSize(800, 600));

EncodingAttributes attrs = new EncodingAttributes();

attrs.setFormat("mp4");

attrs.setAudioAttributes(audio);

attrs.setVideoAttributes(video);

Encoder encoder = new Encoder();

encoder.encode(new MultimediaObject(source), target, attrs);

}

}


,然后在网页html里面使用viedo加载就可以了,但是服务端配置nginx要注意了,


要加上标红的是哪个参数配置,不然浏览器里面打开播放不了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。