rchao

引入文件(

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

 

分类:

技术点:

相关文章:

  • 2021-06-13
  • 2021-05-02
  • 2021-07-30
  • 2021-12-10
  • 2021-11-18
  • 2021-10-02
  • 2021-08-02
  • 2021-08-14
猜你喜欢
  • 2021-11-14
  • 2021-10-02
  • 2021-11-20
  • 2021-09-01
  • 2021-10-18
  • 2021-11-12
相关资源
相似解决方案