package org.sxkj.common.utils;
|
|
import ws.schild.jave.Encoder;
|
import ws.schild.jave.EncoderException;
|
import ws.schild.jave.MultimediaObject;
|
import ws.schild.jave.encode.AudioAttributes;
|
import ws.schild.jave.encode.EncodingAttributes;
|
import ws.schild.jave.encode.VideoAttributes;
|
import ws.schild.jave.info.VideoSize;
|
|
import java.io.File;
|
import java.io.IOException;
|
|
public class VideoZipUtil {
|
/**
|
* 视频压缩
|
* @param sourceFile 需要压缩的原始视频文件
|
* @param bitRate 视频的比特率,用于控制视频的质量和文件大小
|
* @param audioBitRate 音频的比特率,用于控制音频的质量和文件大小
|
* @param width 压缩后视频的宽度
|
* @param height 压缩后视频的高度
|
*/
|
public static File compressVideo(File sourceFile, int bitRate, int audioBitRate, int width, int height) {
|
try {
|
// 创建临时文件来保存压缩后的视频内容
|
File compressedFile = File.createTempFile("compressed_video", ".mp4");
|
|
// 创建音频属性
|
AudioAttributes audio = new AudioAttributes();
|
audio.setCodec("aac");
|
audio.setBitRate(audioBitRate);
|
|
// 创建视频属性
|
VideoAttributes video = new VideoAttributes();
|
video.setCodec("h264");
|
video.setBitRate(bitRate);
|
video.setSize(new VideoSize(width, height));
|
|
// 创建转码属性
|
EncodingAttributes attrs = new EncodingAttributes();
|
attrs.setAudioAttributes(audio);
|
attrs.setVideoAttributes(video);
|
|
// 进行视频转码
|
Encoder encoder = new Encoder();
|
encoder.encode(new MultimediaObject(sourceFile), compressedFile, attrs);
|
// 返回压缩后的临时文件
|
return compressedFile;
|
} catch (IOException | EncoderException e) {
|
e.printStackTrace();
|
throw new IllegalArgumentException("视频压缩失败");
|
}
|
}
|
}
|