java ffmpeg_jave (java的ffmpeg框架)简单使用

引入文件(jave-native-win64       windows 64位系统

jave-native-linux64     linux   64位系统

按自己服务器系统来替换

)

ws.schild

jave-core

2.4.6

ws.schild

jave-native-win64

2.4.6

压缩视频  音频使用 libmp3lame 压缩,ios默认播放器播放会没有声音,还是使用aac

File source = new File("e:/视频/第八课.mp4");

File target = new File("e:/视频/第八课_ys.mp4");        long time = System.currentTimeMillis();        try {

MultimediaObject object = new MultimediaObject(source);

AudioInfo audioInfo = object.getInfo().getAudio();

AudioAttributes audio = new AudioAttributes();

audio.setCodec("aac");            if(audioInfo.getBitRate() > 128000){

audio.setBitRate(new Integer(128000));

}

audio.setChannels(audioInfo.getChannels());            if(audioInfo.getSamplingRate() > 48050){

audio.setSamplingRate(new Integer(48050));

}

VideoInfo videoInfo = object.getInfo().getVideo();

VideoAttributes video = new VideoAttributes();

video.setCodec("h264");            if(videoInfo.getBitRate() > 800000){

video.setBitRate(new Integer(800000));

}            if(videoInfo.getFrameRate() > 20){

video.setFrameRate(new Integer(20));

}            int width = videoInfo.getSize().getWidth();            int height = videoInfo.getSize().getHeight();            if(width > 1280){                float rat = (float) width / 1280;

video.setSize(new VideoSize(1280,(int)(height/rat)));

}

EncodingAttributes attr = new EncodingAttributes();

attr.setFormat("mp4");

attr.setAudioAttributes(audio);

attr.setVideoAttributes(video);

Encoder encoder = new Encoder();

encoder.encode(object, target, attr);

System.out.println("耗时:" + (System.currentTimeMillis() - time)/1000);

} catch (Exception e) {

e.printStackTrace();

}

48304ba5e6f9fe08f3fa1abda7d326ab.png

获取视频某个帧的图片

long times = System.currentTimeMillis();

File source = new File("e:/视频/第八课_ys.mp4");

File target = new File("e:/视频/第八课_ys.png");

MultimediaObject object = new MultimediaObject(source);        try {

VideoInfo videoInfo = object.getInfo().getVideo();

VideoAttributes video = new VideoAttributes();

video.setCodec("png");

video.setSize(videoInfo.getSize());

EncodingAttributes attrs = new EncodingAttributes();

attrs.setFormat("image2");

attrs.setOffset(3f);//设置偏移位置,即开始转码位置(3秒)

attrs.setDuration(0.01f);//设置转码持续时间(1秒)            attrs.setVideoAttributes(video);

Encoder encoder = new Encoder();

encoder.encode(object,target,attrs);

} catch (EncoderException e) {

e.printStackTrace();

}

System.out.println("耗时:"+(System.currentTimeMillis() - times));

计算音频文件时长:File file = new File("视频或者音频");

MultimediaObject object = new MultimediaObject(file);

//这里就是计算的时长

long duration = object.getInfo().getDuration();


版权声明:本文为weixin_33778479原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。