houzhongjian
2024-11-06 7412dd652c0ac48c5a17b5d9b61d5d2a0f686137
提交 | 用户 | 时间
149dd0 1 package com.iailab.netsdk.lib.structure;
H 2
3 import com.iailab.netsdk.lib.NetSDKLib;
4
5 /**
6  * @author 291189
7  * @version 1.0
8  * @description
9  * @date 2023/11/18 15:10
10  */
11 public class NET_VIDEOENC_OPT extends NetSDKLib.SdkStructure{
12     /*视频参数*/
13     /**
14      * 视频使能;1:打开,0:关闭
15      */
16     public    byte                byVideoEnable;
17     /**
18      * 码流控制;参照常量"码流控制"定义
19      */
20     public    byte                 byBitRateControl;
21     /**
22      * 帧率
23      */
24     public    byte                  byFramesPerSec;
25     /**
26      * 编码模式;参照常量"编码模式"定义
27      */
28     public    byte                 byEncodeMode;
29     /**
30      * 分辨率;参照常量"分辨率"定义
31      */
32     public    byte                 byImageSize;
33     /**
34      * 将byImageQlty进行扩展,若byImageQlty为0,抓图配置的ImgQlty为10/30/50/60/80/100六个值,码流配置的ImgQlty值为1-6,兼容之前的1-6档次,若///ImgQltyType为1,则ImgQlty范围为0~100
35      */
36     public    byte                 byImageQltyData;
37
38     //  public    byte                 byImageQlty:7;
39
40     //  public    byte                 byImageQltyType:1;
41
42     public short                wLimitStream;                   /// 限码流参数
43
44     /* 音频参数 */
45
46     /**
47      *   音频使能;1:打开,0:关闭
48      */
49     public    byte                 byAudioEnable;
50
51     /**
52      *   音频编码类型: 0:G711A,1:PCM,2:G711U,3:AMR,4:AAC
53      */
54     public    byte                    wFormatTag;
55     /**
56      * 声道数
57      */
58     public short                nChannels;
59     /**
60      * 采样深度
61      */
62     public short                 wBitsPerSample;
63     /**
64      * 音频叠加使能
65      */
66     public    byte                  bAudioOverlay;
67     /**
68      * H.264 Profile等级(当编码模式为H264时此参数值有效),参照枚举类型EM_H264_PROFILE_RANK,传0,兼容以前,表示该字段无效,不需要考虑级别。
69      */
70     public    byte                 bH264ProfileRank;
71     /**
72      * 采样率
73      */
74     public int               nSamplesPerSec;
75     /**
76      * I帧间隔帧数量,描述两个I帧之间的P帧个数,0-149
77      */
78     public    byte                  bIFrameInterval;
79     /**
80      * NSP
81      */
82     public    byte                    bScanMode;
83
84     public    byte                 bReserved_3;
85
86     public    byte                 bReserved_4;
87
88     public byte getByImageQlty(){
89         byte a=0;
90         byte b=7;
91         return getAnd(byImageQltyData,a,b);
92     }
93
94     public byte getByImageQltyType(){
95         byte a=7;
96         byte b=7+1;
97         return getAnd(byImageQltyData,a,b);
98     }
99
100     /**
101      * 按位与
102      * @param date 原始数据
103      * @param start 需要偏移的位数
104      * @param end 与的位数
105      * @return
106      */
107     private byte getAnd(byte date,byte start,byte end){
108
109         return (byte) (date>>start&getOr(start,end));
110     }
111
112     /**
113      * 按位与的位数
114      * @param start 开始与的位数
115      * @param end 结束与的位数
116      * @return
117      */
118     private byte getOr(byte start,byte end){
119         byte result=0;
120         for (int i = 0; i < end-start; i++) {
121             result|=(1<<i);
122         }
123         return result;
124     }
125 }