zoukankan      html  css  js  c++  java
  • HLSFFmpegBuilder适用于hls协议的构造器 没具体测试

    import com.google.common.collect.ImmutableList;
    import net.bramp.ffmpeg.builder.FFmpegBuilder;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /***
     * 适用于hls协议的构造器,<a href="https://ffmpeg.org/ffmpeg-formats.html#hls-1">hls协议相关参数</a>
     *  @author dqk
     */
    
    public class HLSFFmpegBuilder extends FFmpegBuilder {
    
        /***
         * Set the maximum number of playlist entries. If set to 0 the list file will contain all the segments. Default value is 5.
         */
        private Integer hlsListSize = 5;
    
        /***
         * Set the target segment length in seconds. Default value is 2. Segment will be cut on the next key frame after this time has passed.
         */
        private Integer hlsTime = 2;
    
        /***
         * This is a deprecated option, you can use hls_list_size and hls_flags delete_segments instead it
         *
         * This option is useful to avoid to fill the disk with many segment files, and limits the maximum number of segment files written to disk to wrap.
         */
        @Deprecated
        private Integer hlsWrap = 0;
    
        public HLSFFmpegBuilder setHlsListSize(Integer hlsListSize) {
            this.hlsListSize = hlsListSize;
            return this;
        }
    
        public HLSFFmpegBuilder setHlsTime(Integer hlsTime) {
            this.hlsTime = hlsTime;
            return this;
        }
    
        public HLSFFmpegBuilder setHlsWrap(Integer hlsWrap) {
            this.hlsWrap = hlsWrap;
            return this;
        }
    
        public Integer getHlsListSize() {
            return hlsListSize;
        }
    
        public Integer getHlsTime() {
            return hlsTime;
        }
    
        public Integer getHlsWrap() {
            return hlsWrap;
        }
    
        @Override
        public List<String> build() {
            List<String> args = super.build();
            List<String> temp = new ArrayList<>();
    
            setFormat("hls");
    
            if(this.hlsWrap != null){
                temp.add("-hls_wrap");
                temp.add(hlsWrap.toString());
            }
    
            if(this.hlsTime != null){
                temp.add("-hls_time");
                temp.add(hlsTime.toString());
            }
    
            if(this.hlsListSize != null){
                temp.add("-hls_list_size");
                temp.add(hlsListSize.toString());
            }
    
            for(String arg: temp){
                args.add(arg);
            }
            List<String> newargs = ImmutableList.copyOf(args);
            return newargs;
        }
    }
    GkFFmpegBuilder.java
    import com.google.common.collect.ImmutableList;
    import net.bramp.ffmpeg.builder.FFmpegBuilder;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 为了方便拓展api中没有的参数
     */
    
    public class GkFFmpegBuilder extends FFmpegBuilder {
    
        private Long itsoffset;
    
        @Override
        public List<String> build() {
            // 该数组为不可变数组 (原因未知)
            List<String> args = super.build();
            List<String> temp = new ArrayList<>();
            if(this.itsoffset != null){
                temp.add("-itsoffset");
                temp.add(this.itsoffset.toString());
            }
    
            for(String arg: args){
                temp.add(arg);
            }
            List<String> newargs = ImmutableList.copyOf(temp);
            return newargs;
        }
    
        public Long getItsoffset() {
            return itsoffset;
        }
    
        public GkFFmpegBuilder setItsoffset(Long itsoffset) {
            this.itsoffset = itsoffset;
            return this;
        }
    
    }
  • 相关阅读:
    基于前后端分离的身份认证方式——JWT
    java远程文件操作
    BZOJ3181: [Coci2012]BROJ
    回归本源--位运算及其应用
    BZOJ 1226: [SDOI2009]学校食堂Dining
    BZOJ2734: [HNOI2012]集合选数
    BZOJ2064: 分裂
    BZOJ2679: [Usaco2012 Open]Balanced Cow Subsets
    OI队内测试——石门一
    Codeforces Round #376 (Div. 2)
  • 原文地址:https://www.cnblogs.com/passedbylove/p/11843070.html
Copyright © 2011-2022 走看看