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));

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM