Java实现视频压缩

一、依赖

        <dependency>
            <groupId>org.bytedeco</groupId>
            <artifactId>javacv</artifactId>
            <version>1.5.10</version>
        </dependency>

        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java-util</artifactId>
            <version>4.27.2</version>
        </dependency>

二、Java代码

import org.bytedeco.ffmpeg.global.avcodec;
import org.bytedeco.ffmpeg.global.avutil;
import org.bytedeco.javacv.FFmpegFrameGrabber;
import org.bytedeco.javacv.FFmpegFrameRecorder;
import org.bytedeco.javacv.Frame;


public class CompressVideoBiz {

    public static void main(String[] args) {
        String inputFilePath = "C://alan//test//t1.mp4";
        String outputFilePath = "C://alan//test//t2.mp4";
        try {
            compressVideo(inputFilePath, outputFilePath);
            System.out.println("视频压缩完成!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void compressVideo(String inputFilePath, String outputFilePath) throws Exception {
        // 初始化帧抓取器
        FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(inputFilePath);
        grabber.start();

        // 获取视频的宽度、高度和帧率
        int width = grabber.getImageWidth();
        int height = grabber.getImageHeight();
        double frameRate = grabber.getFrameRate();

        // 初始化帧记录器
        FFmpegFrameRecorder recorder = new FFmpegFrameRecorder(outputFilePath, width, height);
        recorder.setVideoCodec(avcodec.AV_CODEC_ID_H264);
        recorder.setFormat("mp4");
        recorder.setFrameRate(5);
        recorder.setPixelFormat(avutil.AV_PIX_FMT_YUV420P);
        //recorder.setVideoBitrate(1000000); // 设置视频比特率
        recorder.start();

        Frame frame;
        while ((frame = grabber.grab()) != null) {
            recorder.record(frame);
        }

        // 停止并释放资源
        recorder.stop();
        recorder.release();
        grabber.stop();
        grabber.release();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容