AliVCSDK 6.17.0
阿里云音视频SDK,为视频开发者提供一站式接入服务
 
Loading...
Searching...
No Matches
AlivcResolutionEnum.java
1package com.alivc.live.pusher;
2
3import com.alivc.live.annotations.AlivcLiveMode;
4
5
13@Visible
19
24
29
34
39
44
49
56
63
64 private int mSelfDefineWidth;
65 private int mSelfDefineHeight;
66
74 public void setSelfDefineResolution(int width, int height) {
75 if (this.equals(RESOLUTION_SELF_DEFINE)) {
76 mSelfDefineWidth = width;
77 if (mSelfDefineWidth % 16 != 0) {
78 mSelfDefineWidth = (mSelfDefineWidth / 16 + 1) * 16;
79 }
80 mSelfDefineHeight = height;
81 if (mSelfDefineHeight % 16 != 0) {
82 mSelfDefineHeight = (mSelfDefineHeight / 16 + 1) * 16;
83 }
84 }
85 }
86
94 public static int getResolutionWidth(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
95 RectSize rectSize = getResolutionRectSize(resolution, liveMode);
96 return rectSize != null ? rectSize.getWidth() : -1;
97 }
98
106 public static int getResolutionHeight(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
107 RectSize rectSize = getResolutionRectSize(resolution, liveMode);
108 return rectSize != null ? rectSize.getHeight() : -1;
109 }
110
111 private static RectSize getResolutionRectSize(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
112 if (resolution == null) {
113 return null;
114 }
115 switch (resolution) {
116 case RESOLUTION_180P:
117 return new RectSize(192, 320);
118 case RESOLUTION_240P:
119 return new RectSize(240, 320);
120 case RESOLUTION_360P:
121 if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
122 return new RectSize(360, 640);
123 } else {
124 return new RectSize(368, 640);
125 }
126 case RESOLUTION_480P:
127 return new RectSize(480, 640);
128 case RESOLUTION_540P:
129 if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
130 return new RectSize(540, 960);
131 } else {
132 return new RectSize(544, 960);
133 }
134 case RESOLUTION_720P:
135 return new RectSize(720, 1280);
136 case RESOLUTION_1080P: {
137 if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
138 return new RectSize(1080, 1920);
139 } else {
140 return new RectSize(1088, 1920);
141 }
142 }
143 }
144 return new RectSize(resolution.mSelfDefineWidth, resolution.mSelfDefineHeight);
145 }
146
154 public static int getInitBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
155 if (liveMode == AlivcLiveMode.AlivcLiveBasicMode) {
156 switch (resolution) {
157 case RESOLUTION_180P:
158 return AlivcLivePushConstants.BITRATE_180P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
159 case RESOLUTION_240P:
160 return AlivcLivePushConstants.BITRATE_240P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
161 case RESOLUTION_360P:
162 return AlivcLivePushConstants.BITRATE_360P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
163 case RESOLUTION_480P:
164 return AlivcLivePushConstants.BITRATE_480P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
165 case RESOLUTION_540P:
166 return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
167 case RESOLUTION_720P:
168 return AlivcLivePushConstants.BITRATE_720P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
169 case RESOLUTION_1080P:
170 return AlivcLivePushConstants.BITRATE_1080P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
171 default:
172 // DEFAULT_VALUE_INT_DEFINITION
173 return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
174 }
175 } else if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
176 switch (resolution) {
177 case RESOLUTION_180P:
178 return AlivcLivePushConstants.BITRATE_180P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
179 case RESOLUTION_240P:
180 return AlivcLivePushConstants.BITRATE_240P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
181 case RESOLUTION_360P:
182 return AlivcLivePushConstants.BITRATE_360P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
183 case RESOLUTION_480P:
184 return AlivcLivePushConstants.BITRATE_480P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
185 case RESOLUTION_540P:
186 return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
187 case RESOLUTION_720P:
188 return AlivcLivePushConstants.BITRATE_720P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
189 case RESOLUTION_1080P:
190 return AlivcLivePushConstants.BITRATE_1080P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
191 default:
192 // DEFAULT_VALUE_INT_DEFINITION
193 return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
194 }
195 } else {
196 throw new RuntimeException("error live mode");
197 }
198 }
199
207 public static int getTargetBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
208 if (liveMode == AlivcLiveMode.AlivcLiveBasicMode) {
209 switch (resolution) {
210 case RESOLUTION_180P:
211 return AlivcLivePushConstants.BITRATE_180P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
212 case RESOLUTION_240P:
213 return AlivcLivePushConstants.BITRATE_240P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
214 case RESOLUTION_360P:
215 return AlivcLivePushConstants.BITRATE_360P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
216 case RESOLUTION_480P:
217 return AlivcLivePushConstants.BITRATE_480P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
218 case RESOLUTION_540P:
219 return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
220 case RESOLUTION_720P:
221 return AlivcLivePushConstants.BITRATE_720P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
222 case RESOLUTION_1080P:
223 return AlivcLivePushConstants.BITRATE_1080P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
224 default:
225 // DEFAULT_VALUE_INT_DEFINITION
226 return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
227 }
228 } else if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
229 switch (resolution) {
230 case RESOLUTION_180P:
231 return AlivcLivePushConstants.BITRATE_180P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
232 case RESOLUTION_240P:
233 return AlivcLivePushConstants.BITRATE_240P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
234 case RESOLUTION_360P:
235 return AlivcLivePushConstants.BITRATE_360P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
236 case RESOLUTION_480P:
237 return AlivcLivePushConstants.BITRATE_480P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
238 case RESOLUTION_540P:
239 return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
240 case RESOLUTION_720P:
241 return AlivcLivePushConstants.BITRATE_720P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
242 case RESOLUTION_1080P:
243 return AlivcLivePushConstants.BITRATE_1080P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
244 default:
245 // DEFAULT_VALUE_INT_DEFINITION
246 return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
247 }
248 } else {
249 throw new RuntimeException("error live mode!");
250 }
251 }
252
260 public static int getMinBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
261 if (liveMode == AlivcLiveMode.AlivcLiveBasicMode) {
262 switch (resolution) {
263 case RESOLUTION_180P:
264 return AlivcLivePushConstants.BITRATE_180P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
265 case RESOLUTION_240P:
266 return AlivcLivePushConstants.BITRATE_240P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
267 case RESOLUTION_360P:
268 return AlivcLivePushConstants.BITRATE_360P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
269 case RESOLUTION_480P:
270 return AlivcLivePushConstants.BITRATE_480P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
271 case RESOLUTION_540P:
272 return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
273 case RESOLUTION_720P:
274 return AlivcLivePushConstants.BITRATE_720P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
275 case RESOLUTION_1080P:
276 return AlivcLivePushConstants.BITRATE_1080P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
277 default:
278 // DEFAULT_VALUE_INT_DEFINITION
279 return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
280 }
281 } else if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
282 switch (resolution) {
283 case RESOLUTION_180P:
284 return AlivcLivePushConstants.BITRATE_180P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
285 case RESOLUTION_240P:
286 return AlivcLivePushConstants.BITRATE_240P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
287 case RESOLUTION_360P:
288 return AlivcLivePushConstants.BITRATE_360P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
289 case RESOLUTION_480P:
290 return AlivcLivePushConstants.BITRATE_480P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
291 case RESOLUTION_540P:
292 return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
293 case RESOLUTION_720P:
294 return AlivcLivePushConstants.BITRATE_720P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
295 case RESOLUTION_1080P:
296 return AlivcLivePushConstants.BITRATE_1080P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
297 default:
298 // DEFAULT_VALUE_INT_DEFINITION
299 return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
300 }
301 } else {
302 throw new RuntimeException("error live mode!");
303 }
304 }
305
306 private static class RectSize {
307 private final int width;
308 private final int height;
309
310 public RectSize(int width, int height) {
311 this.width = width;
312 this.height = height;
313 }
314
315 public int getWidth() {
316 return width;
317 }
318
319 public int getHeight() {
320 return height;
321 }
322 }
323}
static int getMinBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getTargetBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getResolutionWidth(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getInitBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
void setSelfDefineResolution(int width, int height)
static int getResolutionHeight(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)