AliVCSDK  4.5.1
阿里云音视频SDK,为视频开发者提供一站式接入服务
AlivcLivePushConfig.java
1 package com.alivc.live.pusher;
2 
5 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_MAX_DIFF_PTS;
6 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_MAX_TIMEOUT_COUNT;
7 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_AUDIO_ONLY;
8 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_AUTO_FOCUS;
9 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_FLASH;
10 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_AUDIO_RETRY_COUNT;
11 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_DEFINITION;
12 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_INIT_BITRATE;
13 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_MIN_BITRATE;
14 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_RETRY_INTERVAL;
15 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_TARGET_BITRATE;
16 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_PREVIEW_MIRROR;
17 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_PUSH_MIRROR;
18 import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_VIDEO_ONLY;
19 
20 import android.content.Intent;
21 import android.graphics.ImageFormat;
22 import android.media.AudioFormat;
23 import android.os.Build;
24 
26 
27 import java.io.Serializable;
28 import java.util.ArrayList;
29 
42 @Visible
43 public class AlivcLivePushConfig implements Serializable {
44  public static final String CONFIG = "AlivcLivePushConfig";
45 
46  private AlivcLiveMode mLivePushMode = AlivcLiveMode.AlivcLiveBasicMode;
47 
48  private AlivcResolutionEnum mResolution = DEFAULT_VALUE_INT_DEFINITION;
49  private AlivcFpsEnum mFps = AlivcFpsEnum.FPS_20;
50  private int mTargetVideoBitrate = DEFAULT_VALUE_INT_TARGET_BITRATE;
51  private int mMinVideoBitrate = DEFAULT_VALUE_INT_MIN_BITRATE;
52  private int mInitialVideoBitrate = DEFAULT_VALUE_INT_INIT_BITRATE;
53  private int mBFrames = 0;
54  private static Intent mediaProjectionPermissionResultData = null;
58  private AlivcLivePushCameraTypeEnum mCameraType = CAMERA_TYPE_FRONT;
59  private boolean mPreviewMirror = DEFAULT_VALUE_PREVIEW_MIRROR;
60  private boolean mPushMirror = DEFAULT_VALUE_PUSH_MIRROR;
61  private boolean mAudioOnly = DEFAULT_VALUE_AUDIO_ONLY;
62  private boolean mVideoOnly = DEFAULT_VALUE_VIDEO_ONLY;
63  private boolean mAutoFocus = DEFAULT_VALUE_AUTO_FOCUS;
64  private boolean mFocusBySensor = false;
65  private boolean mFlash = DEFAULT_VALUE_FLASH;
66  private int mWidth = AlivcResolutionEnum.GetResolutionWidth(DEFAULT_VALUE_INT_DEFINITION);
67  private int mHeight = AlivcResolutionEnum.GetResolutionHeight(DEFAULT_VALUE_INT_DEFINITION);
68 
69  //rtmp module
70  private int mConnectRetryCount = DEFAULT_VALUE_INT_AUDIO_RETRY_COUNT;
71  private int mConnectRetryInterval = DEFAULT_VALUE_INT_RETRY_INTERVAL;
72 
73  private long mPtsMaxDiff = DEFAULT_MAX_DIFF_PTS; // 音频在前
74  private int mMaxTimeoutCount = DEFAULT_MAX_TIMEOUT_COUNT;
75  //private int mAlarmRemainPacketSize = DEFAULT_START_ALRAM_PACKET_SIZE;
76  //private int mUndoAlarmRemainPacketSize = DEFAULT_STOP_ALARM_PACKET_SIZE;
77 
79  private AlivcEncodeModeEnum mVideoEncodeMode = AlivcEncodeModeEnum.Encode_MODE_HARD;
80  private AlivcEncodeType mVideoEncodeType = AlivcEncodeType.Encode_TYPE_H264;
81  private AlivcEncodeModeEnum mAudioEncodeMode = AlivcEncodeModeEnum.Encode_MODE_SOFT;
82  private int mVideoFormat = ImageFormat.NV21;
83  private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
84  private AlivcImageFormat mAlivcExternMainImageFormat = AlivcImageFormat.IMAGE_FORMAT_YUV420P;
85  private AlivcSoundFormat mAlivcExternMainSoundFormat = AlivcSoundFormat.SOUND_FORMAT_S16;
86 
88 
89  private int mExposure = 0;
90 
91  private boolean mUseAliPlayerForBGM = false;
92 
93  private boolean enableNarrowbandHDForScreenPusher = true;
94 
95  private boolean enableSDKCrashMechanism = true;
96 
97  //最小帧率
98  private AlivcFpsEnum minFps = AlivcFpsEnum.FPS_8;
99 
100  private boolean enableBitrateControl = true;
101  private boolean enableAutoResolution = false;
102 
103  private boolean initBitFlag = false;
104  private boolean minBitFlag = false;
105  private boolean targetBitFlag = false;
106 
107  private boolean externMainStream = false;
108 
109  private int sendDataTimeout = 3000;
110  private AlivcQualityModeEnum qualityMode = AlivcQualityModeEnum.QM_RESOLUTION_FIRST;
111 
113  private int audioBitRate = 64000;
115  private AlivcAudioSampleRateEnum mAudioSampleRate = AUDIO_SAMPLE_RATE_48000;
116  private String mPausePushImagePath = "";
117  private String mNetworkPoorPushImagePath = "";
118 
119  private boolean requireGLSharedContext = false;
120  private boolean mAudioCaptureWithoutMix = false;
121 
122  private String mExtraInfo;
123 
125 
126  public AlivcLivePushConfig() {
127  mediaProjectionPermissionResultData = null;
128  if (Build.MANUFACTURER.equals("Letv") || Build.MODEL.equals("Le X620")) {
129  mAudioCaptureWithoutMix = true;
130  }
131  }
132 
133  private ArrayList<WaterMarkInfo> waterMarkInfos = new ArrayList<>();
134 
135  public int getVideoFormat() {
136  return mVideoFormat;
137  }
138 
139  public void setVideoFormat(int videoFormat) {
140  this.mVideoFormat = videoFormat;
141  }
142 
143  public int getAudioFormat() {
144  return mAudioFormat;
145  }
146 
147  public void setAudioFormat(int audioFormat) {
148  this.mAudioFormat = audioFormat;
149  }
150 
163  public void setLivePushMode(AlivcLiveMode pushMode) {
164  this.mLivePushMode = pushMode;
165  }
166 
174  return mLivePushMode;
175  }
176 
177  private boolean checkLiveInteractiveMode() {
178  return mLivePushMode == AlivcLiveMode.AlivcLiveInteractiveMode;
179  }
180 
190  return mResolution;
191  }
192 
201  public void setResolution(AlivcResolutionEnum resolution) {
202  this.mResolution = resolution;
203 
204  if (!targetBitFlag) {
205  mTargetVideoBitrate = checkLiveInteractiveMode() ?
206  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getTargetBitrate(resolution);
207  }
208 
209  if (!initBitFlag) {
210  mInitialVideoBitrate = checkLiveInteractiveMode() ?
211  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getInitBitrate(resolution);
212  }
213 
214  if (!minBitFlag) {
215  mMinVideoBitrate = checkLiveInteractiveMode() ?
216  AlivcResolutionEnum.getInteractiveMinBitrate(resolution) : AlivcResolutionEnum.getMinBitrate(resolution);
217  }
218  this.mWidth = AlivcResolutionEnum.GetResolutionWidth(resolution);
219  this.mHeight = AlivcResolutionEnum.GetResolutionHeight(resolution);
220  }
221 
227  public String getExtraInfo() {
228  return mExtraInfo;
229  }
230 
238  public void setExtraInfo(String extraInfo) {
239  mExtraInfo = extraInfo;
240  }
241 
250  return monitorLevel;
251  }
252 
263  public void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel) {
264  this.monitorLevel = monitorLevel;
265  }
266 
272  public int getFps() {
273  return mFps.getFps();
274  }
275 
284  public void setFps(AlivcFpsEnum fps) {
285  this.mFps = fps;
286  }
287 
293  public int getTargetVideoBitrate() {
294  return mTargetVideoBitrate;
295  }
296 
302  public void setTargetVideoBitrate(int targetBitRate) {
303  this.mTargetVideoBitrate = targetBitRate;
304  this.targetBitFlag = true;
305  }
306 
312  public int getMinVideoBitrate() {
313  return mMinVideoBitrate;
314  }
315 
321  public void setMinVideoBitrate(int minBitrate) {
322  this.mMinVideoBitrate = minBitrate;
323  this.minBitFlag = true;
324  }
325 
331  public int getBFrames() {
332  return mBFrames;
333  }
334 
342  public void setBFrames(int bFrame) {
343  this.mBFrames = bFrame;
344  }
345 
355  return mAudioSampleRate;
356  }
357 
366  public void setAudioSampleRate(AlivcAudioSampleRateEnum audioSample) {
367  this.mAudioSampleRate = audioSample;
368  }
369 
377  public int getPreviewOrientation() {
378  return mPreviewOrientation.getOrientation();
379  }
380 
389  public void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation) {
390  this.mPreviewOrientation = previewOrientation;
391  }
392 
402  public int getPreviewRotation() {
403  return mPreviewRotation.getRotation();
404  }
405 
417  this.mPreviewRotation = rotation;
418  }
419 
427  public int getCameraType() {
428  return mCameraType.getCameraId();
429  }
430 
439  public void setCameraType(AlivcLivePushCameraTypeEnum cameraType) {
440  this.mCameraType = cameraType;
441  }
442 
450  public boolean isPreviewMirror() {
451  return mPreviewMirror;
452  }
453 
461  public void setPreviewMirror(boolean mirror) {
462  this.mPreviewMirror = mirror;
463  }
464 
472  public boolean isAudioOnly() {
473  return mAudioOnly;
474  }
475 
483  public void setAudioOnly(boolean audioOnly) {
484  this.mAudioOnly = audioOnly;
485  }
486 
492  public boolean isVideoOnly() {
493  return mVideoOnly;
494  }
495 
503  public void setVideoOnly(boolean videoOnly) {
504  this.mVideoOnly = videoOnly;
505  }
506 
514  public boolean isAutoFocus() {
515  return mAutoFocus;
516  }
517 
525  public void setAutoFocus(boolean autoFocus) {
526  this.mAutoFocus = autoFocus;
527  }
528 
536  public boolean isFocusBySensor() {
537  return mFocusBySensor;
538  }
539 
549  public void setFocusBySensor(boolean focusBySensor) {
550  this.mFocusBySensor = focusBySensor;
551  }
552 
560  public boolean isFlash() {
561  return mFlash;
562  }
563 
571  public void setFlash(boolean flash) {
572  this.mFlash = flash;
573  }
574 
582  public int getSendDataTimeout() {
583  return sendDataTimeout;
584  }
585 
593  public void setSendDataTimeout(int sendDataTimeout) {
594  this.sendDataTimeout = sendDataTimeout;
595  }
596 
602  public String getPausePushImage() {
603  return mPausePushImagePath;
604  }
605 
611  public void setPausePushImage(String path) {
612  mPausePushImagePath = path;
613  }
614 
620  public String getNetworkPoorPushImage() {
621  return mNetworkPoorPushImagePath;
622  }
623 
629  public void setNetworkPoorPushImage(String path) {
630  mNetworkPoorPushImagePath = path;
631  }
632 
638  public int getInitialVideoBitrate() {
639  return mInitialVideoBitrate;
640  }
641 
647  public void setInitialVideoBitrate(int initialVideoBitrate) {
648  this.mInitialVideoBitrate = initialVideoBitrate;
649  this.initBitFlag = true;
650  }
651 
659  public int getConnectRetryCount() {
660  return mConnectRetryCount;
661  }
662 
670  public void setConnectRetryCount(int connectRetryCount) {
671  this.mConnectRetryCount = connectRetryCount;
672  }
673 
681  public int getConnectRetryInterval() {
682  return mConnectRetryInterval;
683  }
684 
692  public void setConnectRetryInterval(int connectRetryInterval) {
693  this.mConnectRetryInterval = connectRetryInterval;
694  }
695 
703  public boolean isPushMirror() {
704  return mPushMirror;
705  }
706 
714  public void setPushMirror(boolean pushMirror) {
715  this.mPushMirror = pushMirror;
716  }
717 
727  return mVideoEncodeMode;
728  }
729 
738  public void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode) {
739  this.mVideoEncodeMode = videoEncodeMode;
740  }
741 
751  return mVideoEncodeType;
752  }
753 
762  public void setVideoEncodeType(AlivcEncodeType videoEncodeType) {
763  this.mVideoEncodeType = videoEncodeType;
764  }
765 
775  return mAudioEncodeMode;
776  }
777 
786  public void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode) {
787  this.mAudioEncodeMode = audioEncodeMode;
788  }
789 
795  public int getWidth() {
796  return mWidth;
797  }
798 
804  public int getHeight() {
805  return mHeight;
806  }
807 
815  public int getAudioChannels() {
816  return mAudioChannels.getChannelCount();
817  }
818 
826  public void setAudioChannels(AlivcAudioChannelEnum audioChannels) {
827  mAudioChannels = audioChannels;
828  }
829 
837  public int getVideoEncodeGop() {
838  return mVideoEncodeGop.getGop();
839  }
840 
848  public void setVideoEncodeGop(AlivcVideoEncodeGopEnum videoEncodeGop) {
849  mVideoEncodeGop = videoEncodeGop;
850  }
851 
861  public int getExposure() {
862  return mExposure;
863  }
864 
874  public void setExposure(int exposure) {
875  this.mExposure = exposure;
876  }
877 
888  mUseAliPlayerForBGM = useAliPlayerForBGM;
889  }
890 
900  public boolean useAliPlayerForBGM() {
901  return mUseAliPlayerForBGM;
902  }
903 
913  public void setEnableNarrowbandHDForScreenPusher(boolean enable) {
914  enableNarrowbandHDForScreenPusher = enable;
915  }
916 
927  return enableNarrowbandHDForScreenPusher;
928  }
929 
940  public void setEnableSDKCrashMechanism(boolean enable) {
941  enableSDKCrashMechanism = enable;
942  }
943 
954  public boolean isEnableSDKCrashMechanism() {
955  return enableSDKCrashMechanism;
956  }
957 
966  public int getMinFps() {
967  return minFps.getFps();
968  }
969 
978  public void setMinFps(AlivcFpsEnum minFps) {
979  this.minFps = minFps;
980  }
981 
991  return audioProfile;
992  }
993 
1002  public void setAudioProfile(AlivcAudioAACProfileEnum audioProfile) {
1003  this.audioProfile = audioProfile;
1004  }
1005 
1013  public int getAudioBitRate() {
1014  return audioBitRate;
1015  }
1016 
1024  public void setAudioBitRate(int audioBitRate) {
1025  this.audioBitRate = audioBitRate;
1026  }
1027 
1039  return audioSceneMode;
1040  }
1041 
1052  public void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode) {
1053  this.audioSceneMode = audioSceneMode;
1054  }
1055 
1064  public void setQualityMode(AlivcQualityModeEnum quality) {
1065  this.qualityMode = quality;
1066  }
1067 
1077  return qualityMode;
1078  }
1079 
1087  return mediaProjectionPermissionResultData;
1088  }
1089 
1096  public static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData) {
1097  AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1098  }
1099 
1107  public boolean isEnableBitrateControl() {
1108  return enableBitrateControl;
1109  }
1110 
1118  public void setEnableBitrateControl(boolean enableBitrateControl) {
1119  this.enableBitrateControl = enableBitrateControl;
1120  }
1121 
1129  public boolean isEnableAutoResolution() {
1130  return enableAutoResolution;
1131  }
1132 
1140  public void setEnableAutoResolution(boolean enableAutoResolution) {
1141  this.enableAutoResolution = enableAutoResolution;
1142  }
1143 
1151  public boolean isExternMainStream() {
1152  return externMainStream;
1153  }
1154 
1164  public void setExternMainStream(boolean externMainStream) {
1165  this.externMainStream = externMainStream;
1166  }
1167 
1179  public void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat) {
1180  this.externMainStream = externMainStream;
1181  mAlivcExternMainImageFormat = imageFormat;
1182  mAlivcExternMainSoundFormat = soundFormat;
1183  }
1184 
1194  return mAlivcExternMainImageFormat;
1195  }
1196 
1204  public void setAlivcExternMainImageFormat(AlivcImageFormat alivcExternMainImageFormat) {
1205  this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1206  }
1207 
1217  return mAlivcExternMainSoundFormat;
1218  }
1219 
1229  this.mAlivcExternMainSoundFormat = soundFormat;
1230  }
1231 
1241  return mPreviewDisplayMode;
1242  }
1243 
1253  this.mPreviewDisplayMode = displayMode;
1254  }
1255 
1264  public void setRequireRenderContextNotify(boolean enable) {
1265  this.requireGLSharedContext = enable;
1266  }
1267 
1277  return this.requireGLSharedContext;
1278  }
1279 
1287  public void setAudioCaptureWithoutMix(boolean on) {
1288  this.mAudioCaptureWithoutMix = on;
1289  }
1290 
1298  public boolean getAudioCaptureWithoutMix() {
1299  return mAudioCaptureWithoutMix;
1300  }
1301 
1314  @Deprecated
1315  public void addWaterMark(String path, float x, float y, float width) {
1316  WaterMarkInfo waterMarkInfo = new WaterMarkInfo();
1317  waterMarkInfo.mWaterMarkPath = path;
1318  waterMarkInfo.mWaterMarkCoordX = x;
1319  waterMarkInfo.mWaterMarkCoordY = y;
1320  waterMarkInfo.mWaterMarkWidth = width;
1321  if (waterMarkInfos.size() < 3) {
1322  waterMarkInfos.add(waterMarkInfo);
1323  }
1324  }
1325 
1329  @Deprecated
1330  public void clearWaterMark() {
1331  waterMarkInfos.clear();
1332  }
1333 
1339  @Deprecated
1340  public void removeWaterMark(String path) {
1341  for (WaterMarkInfo info : waterMarkInfos) {
1342  if (path != null && path.equals(info.mWaterMarkPath)) {
1343  waterMarkInfos.remove(info);
1344  break;
1345  }
1346  }
1347  }
1348 
1355  ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1356  return waterMarkInfos;
1357  }
1358 
1359 } // end of live_pusher
void setAlivcExternMainImageFormat(AlivcImageFormat alivcExternMainImageFormat)
void addWaterMark(String path, float x, float y, float width)
void setVideoEncodeGop(AlivcVideoEncodeGopEnum videoEncodeGop)
void setAudioSampleRate(AlivcAudioSampleRateEnum audioSample)
void setEnableAutoResolution(boolean enableAutoResolution)
void setInitialVideoBitrate(int initialVideoBitrate)
void setAudioChannels(AlivcAudioChannelEnum audioChannels)
推流视频采集帧率
void setQualityMode(AlivcQualityModeEnum quality)
void setCameraType(AlivcLivePushCameraTypeEnum cameraType)
void setAudioProfile(AlivcAudioAACProfileEnum audioProfile)
void setResolution(AlivcResolutionEnum resolution)
void setPreviewDisplayMode(AlivcPreviewDisplayMode displayMode)
void setConnectRetryInterval(int connectRetryInterval)
void setUseAliPlayerForBGM(boolean useAliPlayerForBGM)
void setExternMainStream(boolean externMainStream)
void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode)
void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode)
void setAlivcExternMainSoundFormat(AlivcSoundFormat soundFormat)
static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData)
void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel)
void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat)
void setVideoEncodeType(AlivcEncodeType videoEncodeType)
void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode)
void setPreviewRotation(AlivcPreviewRotationEnum rotation)
void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation)
void setEnableBitrateControl(boolean enableBitrateControl)
void setConnectRetryCount(int connectRetryCount)