• 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));
  • 相关阅读:
    对单片机存储分配新的认识
    超简单的word转swf 实现
    纯真IP数据库
    webservice 特殊字符处理
    QQ输入法导致win8 x64 装不上vs11,打不开记事本,等各种变态问题
    时间戳转换
    Remote Desktop Organizer 1.4.5
    Xcdoe 4.6 dbank下载
    链接复用
    Visual Studio 2012 序列号
  • 原文地址:https://www.cnblogs.com/rchao/p/10282144.html
Copyright © 2020-2023  润新知