AliVCSDK  6.3.0
阿里云音视频SDK,为视频开发者提供一站式接入服务
AlivcResolutionEnum.java
1 package com.alivc.live.pusher;
2 
4 
13 @Visible
14 public enum AlivcResolutionEnum {
19 
24 
29 
34 
39 
44 
49 
54 
61 
62  private int mSelfDefineWidth;
63  private int mSelfDefineHeight;
64 
65  public void setSelfDefineResolution(int width, int height) {
66  if (this.equals(RESOLUTION_SELF_DEFINE)) {
67  mSelfDefineWidth = width;
68  if (mSelfDefineWidth % 16 != 0) {
69  mSelfDefineWidth = (mSelfDefineWidth / 16 + 1) * 16;
70  }
71  mSelfDefineHeight = height;
72  if (mSelfDefineHeight % 16 != 0) {
73  mSelfDefineHeight = (mSelfDefineHeight / 16 + 1) * 16;
74  }
75  }
76  }
77 
85  public static int getResolutionWidth(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
86  RectSize rectSize = getResolutionRectSize(resolution, liveMode);
87  return rectSize != null ? rectSize.getWidth() : -1;
88  }
89 
97  public static int getResolutionHeight(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
98  RectSize rectSize = getResolutionRectSize(resolution, liveMode);
99  return rectSize != null ? rectSize.getHeight() : -1;
100  }
101 
102  private static RectSize getResolutionRectSize(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
103  if (resolution == null) {
104  return null;
105  }
106  switch (resolution) {
107  case RESOLUTION_180P:
108  return new RectSize(192, 320);
109  case RESOLUTION_240P:
110  return new RectSize(240, 320);
111  case RESOLUTION_360P:
112  return new RectSize(368, 640);
113  case RESOLUTION_480P:
114  return new RectSize(480, 640);
115  case RESOLUTION_540P:
116  if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
117  return new RectSize(540, 960);
118  } else {
119  return new RectSize(544, 960);
120  }
121  case RESOLUTION_720P:
122  return new RectSize(720, 1280);
123  case RESOLUTION_1080P: {
124  if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
125  return new RectSize(1080, 1920);
126  } else {
127  return new RectSize(1088, 1920);
128  }
129  }
130  }
131  return new RectSize(resolution.mSelfDefineWidth, resolution.mSelfDefineHeight);
132  }
133 
141  public static int getInitBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
142  if (liveMode == AlivcLiveMode.AlivcLiveBasicMode) {
143  switch (resolution) {
144  case RESOLUTION_180P:
145  return AlivcLivePushConstants.BITRATE_180P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
146  case RESOLUTION_240P:
147  return AlivcLivePushConstants.BITRATE_240P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
148  case RESOLUTION_360P:
149  return AlivcLivePushConstants.BITRATE_360P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
150  case RESOLUTION_480P:
151  return AlivcLivePushConstants.BITRATE_480P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
152  case RESOLUTION_540P:
153  return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
154  case RESOLUTION_720P:
155  return AlivcLivePushConstants.BITRATE_720P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
156  case RESOLUTION_1080P:
157  return AlivcLivePushConstants.BITRATE_1080P.DEFAULT_VALUE_INT_INIT_BITRATE.getBitrate();
158  default:
159  throw new RuntimeException("error resolution!");
160  }
161  } else if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
162  switch (resolution) {
163  case RESOLUTION_180P:
164  return AlivcLivePushConstants.BITRATE_180P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
165  case RESOLUTION_240P:
166  return AlivcLivePushConstants.BITRATE_240P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
167  case RESOLUTION_360P:
168  return AlivcLivePushConstants.BITRATE_360P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
169  case RESOLUTION_480P:
170  return AlivcLivePushConstants.BITRATE_480P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
171  case RESOLUTION_540P:
172  return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
173  case RESOLUTION_720P:
174  return AlivcLivePushConstants.BITRATE_720P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
175  case RESOLUTION_1080P:
176  return AlivcLivePushConstants.BITRATE_1080P.INTERACTIVE_VALUE_INT_INIT_BITRATE.getBitrate();
177  default:
178  throw new RuntimeException("error resolution!");
179  }
180  } else {
181  throw new RuntimeException("error live mode");
182  }
183  }
184 
192  public static int getTargetBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
193  if (liveMode == AlivcLiveMode.AlivcLiveBasicMode) {
194  switch (resolution) {
195  case RESOLUTION_180P:
196  return AlivcLivePushConstants.BITRATE_180P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
197  case RESOLUTION_240P:
198  return AlivcLivePushConstants.BITRATE_240P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
199  case RESOLUTION_360P:
200  return AlivcLivePushConstants.BITRATE_360P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
201  case RESOLUTION_480P:
202  return AlivcLivePushConstants.BITRATE_480P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
203  case RESOLUTION_540P:
204  return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
205  case RESOLUTION_720P:
206  return AlivcLivePushConstants.BITRATE_720P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
207  case RESOLUTION_1080P:
208  return AlivcLivePushConstants.BITRATE_1080P.DEFAULT_VALUE_INT_TARGET_BITRATE.getBitrate();
209  default:
210  throw new RuntimeException("error resolution!");
211  }
212  } else if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
213  switch (resolution) {
214  case RESOLUTION_180P:
215  return AlivcLivePushConstants.BITRATE_180P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
216  case RESOLUTION_240P:
217  return AlivcLivePushConstants.BITRATE_240P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
218  case RESOLUTION_360P:
219  return AlivcLivePushConstants.BITRATE_360P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
220  case RESOLUTION_480P:
221  return AlivcLivePushConstants.BITRATE_480P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
222  case RESOLUTION_540P:
223  return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
224  case RESOLUTION_720P:
225  return AlivcLivePushConstants.BITRATE_720P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
226  case RESOLUTION_1080P:
227  return AlivcLivePushConstants.BITRATE_1080P.INTERACTIVE_VALUE_INT_TARGET_BITRATE.getBitrate();
228  default:
229  throw new RuntimeException("error resolution!");
230  }
231  } else {
232  throw new RuntimeException("error live mode!");
233  }
234  }
235 
243  public static int getMinBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode) {
244  if (liveMode == AlivcLiveMode.AlivcLiveBasicMode) {
245  switch (resolution) {
246  case RESOLUTION_180P:
247  return AlivcLivePushConstants.BITRATE_180P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
248  case RESOLUTION_240P:
249  return AlivcLivePushConstants.BITRATE_240P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
250  case RESOLUTION_360P:
251  return AlivcLivePushConstants.BITRATE_360P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
252  case RESOLUTION_480P:
253  return AlivcLivePushConstants.BITRATE_480P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
254  case RESOLUTION_540P:
255  return AlivcLivePushConstants.BITRATE_540P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
256  case RESOLUTION_720P:
257  return AlivcLivePushConstants.BITRATE_720P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
258  case RESOLUTION_1080P:
259  return AlivcLivePushConstants.BITRATE_1080P.DEFAULT_VALUE_INT_MIN_BITRATE.getBitrate();
260  default:
261  throw new RuntimeException("error resolution!");
262  }
263  } else if (liveMode == AlivcLiveMode.AlivcLiveInteractiveMode) {
264  switch (resolution) {
265  case RESOLUTION_180P:
266  return AlivcLivePushConstants.BITRATE_180P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
267  case RESOLUTION_240P:
268  return AlivcLivePushConstants.BITRATE_240P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
269  case RESOLUTION_360P:
270  return AlivcLivePushConstants.BITRATE_360P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
271  case RESOLUTION_480P:
272  return AlivcLivePushConstants.BITRATE_480P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
273  case RESOLUTION_540P:
274  return AlivcLivePushConstants.BITRATE_540P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
275  case RESOLUTION_720P:
276  return AlivcLivePushConstants.BITRATE_720P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
277  case RESOLUTION_1080P:
278  return AlivcLivePushConstants.BITRATE_1080P.INTERACTIVE_VALUE_INT_MIN_BITRATE.getBitrate();
279  default:
280  throw new RuntimeException("error resolution!");
281  }
282  } else {
283  throw new RuntimeException("error live mode!");
284  }
285  }
286 
287  private static class RectSize {
288  private final int width;
289  private final int height;
290 
291  public RectSize(int width, int height) {
292  this.width = width;
293  this.height = height;
294  }
295 
296  public int getWidth() {
297  return width;
298  }
299 
300  public int getHeight() {
301  return height;
302  }
303  }
304 }
static int getResolutionHeight(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getResolutionWidth(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getInitBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getTargetBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getMinBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)