zoukankan      html  css  js  c++  java
  • jave (java的ffmpeg框架)简单使用

    引入文件(

    jave-native-win64       windows 64位系统
    jave-native-linux64 linux 64位系统
    按自己服务器系统来替换

    <dependency>
        <groupId>ws.schild</groupId>
        <artifactId>jave-core</artifactId>
        <version>2.4.6</version>
    </dependency>
    <dependency>
        <groupId>ws.schild</groupId>
        <artifactId>jave-native-win64</artifactId>
         <version>2.4.6</version>
    </dependency>

    压缩视频  音频使用 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();
            }

    获取视频某个帧的图片

    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));
  • 相关阅读:
    斜率dp cdq 分治
    POJ2449 (k短路)
    BZOJ1576 (最短路+并查集)
    SWUST0249 (凸包面积)
    道路修建 (网络流)
    HDU3930 (原根)
    ZOJ2006 (后缀自动机)
    Codechef2015 May
    后缀自动机
    Digit (数位DP)
  • 原文地址:https://www.cnblogs.com/rchao/p/10282144.html
Copyright © 2011-2022 走看看