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 
30 
31 
39 @Visible
40 public class AlivcLivePushConfig implements Serializable {
41  public static final String CONFIG = "AlivcLivePushConfig";
42 
43  private AlivcLiveMode mLivePushMode = AlivcLiveMode.AlivcLiveBasicMode;
44 
45  private AlivcResolutionEnum mResolution = DEFAULT_VALUE_INT_DEFINITION;
46  private AlivcFpsEnum mFps = AlivcFpsEnum.FPS_20;
47  private int mTargetVideoBitrate = DEFAULT_VALUE_INT_TARGET_BITRATE;
48  private int mMinVideoBitrate = DEFAULT_VALUE_INT_MIN_BITRATE;
49  private int mInitialVideoBitrate = DEFAULT_VALUE_INT_INIT_BITRATE;
50  private int mBFrames = 0;
51  private static Intent mediaProjectionPermissionResultData = null;
55  private AlivcLivePushCameraTypeEnum mCameraType = CAMERA_TYPE_FRONT;
56  private boolean mPreviewMirror = DEFAULT_VALUE_PREVIEW_MIRROR;
57  private boolean mPushMirror = DEFAULT_VALUE_PUSH_MIRROR;
58  private boolean mAudioOnly = DEFAULT_VALUE_AUDIO_ONLY;
59  private boolean mVideoOnly = DEFAULT_VALUE_VIDEO_ONLY;
60  private boolean mAutoFocus = DEFAULT_VALUE_AUTO_FOCUS;
61  private boolean mFocusBySensor = false;
62  private boolean mFlash = DEFAULT_VALUE_FLASH;
63  private int mWidth = AlivcResolutionEnum.GetResolutionWidth(DEFAULT_VALUE_INT_DEFINITION);
64  private int mHeight = AlivcResolutionEnum.GetResolutionHeight(DEFAULT_VALUE_INT_DEFINITION);
65 
66  //rtmp module
67  private int mConnectRetryCount = DEFAULT_VALUE_INT_AUDIO_RETRY_COUNT;
68  private int mConnectRetryInterval = DEFAULT_VALUE_INT_RETRY_INTERVAL;
69 
70  private long mPtsMaxDiff = DEFAULT_MAX_DIFF_PTS; // 音频在前
71  private int mMaxTimeoutCount = DEFAULT_MAX_TIMEOUT_COUNT;
72  //private int mAlarmRemainPacketSize = DEFAULT_START_ALRAM_PACKET_SIZE;
73  //private int mUndoAlarmRemainPacketSize = DEFAULT_STOP_ALARM_PACKET_SIZE;
74 
76  private AlivcEncodeModeEnum mVideoEncodeMode = AlivcEncodeModeEnum.Encode_MODE_HARD;
77  private AlivcEncodeType mVideoEncodeType = AlivcEncodeType.Encode_TYPE_H264;
78  private AlivcEncodeModeEnum mAudioEncodeMode = AlivcEncodeModeEnum.Encode_MODE_SOFT;
79  private int mVideoFormat = ImageFormat.NV21;
80  private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
81  private AlivcImageFormat mAlivcExternMainImageFormat = AlivcImageFormat.IMAGE_FORMAT_YUV420P;
82  private AlivcSoundFormat mAlivcExternMainSoundFormat = AlivcSoundFormat.SOUND_FORMAT_S16;
83 
85 
86  private int mExposure = 0;
87 
88  private boolean mUseAliPlayerForBGM = false;
89 
90  private boolean enableNarrowbandHDForScreenPusher = true;
91 
92  private boolean enableSDKCrashMechanism = true;
93 
94  //最小帧率
95  private AlivcFpsEnum minFps = AlivcFpsEnum.FPS_8;
96 
97  private boolean enableBitrateControl = true;
98  private boolean enableAutoResolution = false;
99 
100  private boolean initBitFlag = false;
101  private boolean minBitFlag = false;
102  private boolean targetBitFlag = false;
103 
104  private boolean externMainStream = false;
105 
106  private int sendDataTimeout = 3000;
108 
110  private int audioBitRate = 64000;
112  private AlivcAudioSampleRateEnum mAudioSampleRate = AUDIO_SAMPLE_RATE_48000;
113  private String mPausePushImagePath = "";
114  private String mNetworkPoorPushImagePath = "";
115 
116  private boolean requireGLSharedContext = false;
117  private boolean mAudioCaptureWithoutMix = false;
118 
119  private String mExtraInfo;
120 
122 
123  public AlivcLivePushConfig() {
124  mediaProjectionPermissionResultData = null;
125  if (Build.MANUFACTURER.equals("Letv") || Build.MODEL.equals("Le X620")) {
126  mAudioCaptureWithoutMix = true;
127  }
128  }
129 
130  private ArrayList<WaterMarkInfo> waterMarkInfos = new ArrayList<>();
131 
132  public int getVideoFormat() {
133  return mVideoFormat;
134  }
135 
136  public void setVideoFormat(int videoFormat) {
137  this.mVideoFormat = videoFormat;
138  }
139 
140  public int getAudioFormat() {
141  return mAudioFormat;
142  }
143 
144  public void setAudioFormat(int audioFormat) {
145  this.mAudioFormat = audioFormat;
146  }
147 
160  public void setLivePushMode(AlivcLiveMode pushMode) {
161  this.mLivePushMode = pushMode;
162  }
163 
171  return mLivePushMode;
172  }
173 
174  private boolean checkLiveInteractiveMode() {
175  return mLivePushMode == AlivcLiveMode.AlivcLiveInteractiveMode;
176  }
177 
187  return mResolution;
188  }
189 
198  public void setResolution(AlivcResolutionEnum resolution) {
199  this.mResolution = resolution;
200 
201  if (!targetBitFlag) {
202  mTargetVideoBitrate = checkLiveInteractiveMode() ?
203  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getTargetBitrate(resolution);
204  }
205 
206  if (!initBitFlag) {
207  mInitialVideoBitrate = checkLiveInteractiveMode() ?
208  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getInitBitrate(resolution);
209  }
210 
211  if (!minBitFlag) {
212  mMinVideoBitrate = checkLiveInteractiveMode() ?
213  AlivcResolutionEnum.getInteractiveMinBitrate(resolution) : AlivcResolutionEnum.getMinBitrate(resolution);
214  }
215  this.mWidth = AlivcResolutionEnum.GetResolutionWidth(resolution);
216  this.mHeight = AlivcResolutionEnum.GetResolutionHeight(resolution);
217  }
218 
224  public String getExtraInfo() {
225  return mExtraInfo;
226  }
227 
235  public void setExtraInfo(String extraInfo) {
236  mExtraInfo = extraInfo;
237  }
238 
247  return monitorLevel;
248  }
249 
260  public void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel) {
261  this.monitorLevel = monitorLevel;
262  }
263 
269  public int getFps() {
270  return mFps.getFps();
271  }
272 
281  public void setFps(AlivcFpsEnum fps) {
282  this.mFps = fps;
283  }
284 
290  public int getTargetVideoBitrate() {
291  return mTargetVideoBitrate;
292  }
293 
299  public void setTargetVideoBitrate(int targetBitRate) {
300  this.mTargetVideoBitrate = targetBitRate;
301  this.targetBitFlag = true;
302  }
303 
309  public int getMinVideoBitrate() {
310  return mMinVideoBitrate;
311  }
312 
318  public void setMinVideoBitrate(int minBitrate) {
319  this.mMinVideoBitrate = minBitrate;
320  this.minBitFlag = true;
321  }
322 
330  public int getBFrames() {
331  return mBFrames;
332  }
333 
341  public void setBFrames(int bFrame) {
342  this.mBFrames = bFrame;
343  }
344 
354  return mAudioSampleRate;
355  }
356 
365  public void setAudioSampleRate(AlivcAudioSampleRateEnum audioSample) {
366  this.mAudioSampleRate = audioSample;
367  }
368 
376  public int getPreviewOrientation() {
377  return mPreviewOrientation.getOrientation();
378  }
379 
388  public void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation) {
389  this.mPreviewOrientation = previewOrientation;
390  }
391 
401  public int getPreviewRotation() {
402  return mPreviewRotation.getRotation();
403  }
404 
416  this.mPreviewRotation = rotation;
417  }
418 
426  public int getCameraType() {
427  return mCameraType.getCameraId();
428  }
429 
438  public void setCameraType(AlivcLivePushCameraTypeEnum cameraType) {
439  this.mCameraType = cameraType;
440  }
441 
449  public boolean isPreviewMirror() {
450  return mPreviewMirror;
451  }
452 
460  public void setPreviewMirror(boolean mirror) {
461  this.mPreviewMirror = mirror;
462  }
463 
471  public boolean isAudioOnly() {
472  return mAudioOnly;
473  }
474 
482  public void setAudioOnly(boolean audioOnly) {
483  this.mAudioOnly = audioOnly;
484  }
485 
493  public boolean isVideoOnly() {
494  return mVideoOnly;
495  }
496 
504  public void setVideoOnly(boolean videoOnly) {
505  this.mVideoOnly = videoOnly;
506  }
507 
515  public boolean isAutoFocus() {
516  return mAutoFocus;
517  }
518 
526  public void setAutoFocus(boolean autoFocus) {
527  this.mAutoFocus = autoFocus;
528  }
529 
537  public boolean isFocusBySensor() {
538  return mFocusBySensor;
539  }
540 
550  public void setFocusBySensor(boolean focusBySensor) {
551  this.mFocusBySensor = focusBySensor;
552  }
553 
561  public boolean isFlash() {
562  return mFlash;
563  }
564 
572  public void setFlash(boolean flash) {
573  this.mFlash = flash;
574  }
575 
583  public int getSendDataTimeout() {
584  return sendDataTimeout;
585  }
586 
594  public void setSendDataTimeout(int sendDataTimeout) {
595  this.sendDataTimeout = sendDataTimeout;
596  }
597 
603  public String getPausePushImage() {
604  return mPausePushImagePath;
605  }
606 
612  public void setPausePushImage(String path) {
613  mPausePushImagePath = path;
614  }
615 
621  public String getNetworkPoorPushImage() {
622  return mNetworkPoorPushImagePath;
623  }
624 
630  public void setNetworkPoorPushImage(String path) {
631  mNetworkPoorPushImagePath = path;
632  }
633 
639  public int getInitialVideoBitrate() {
640  return mInitialVideoBitrate;
641  }
642 
648  public void setInitialVideoBitrate(int initialVideoBitrate) {
649  this.mInitialVideoBitrate = initialVideoBitrate;
650  this.initBitFlag = true;
651  }
652 
660  public int getConnectRetryCount() {
661  return mConnectRetryCount;
662  }
663 
671  public void setConnectRetryCount(int connectRetryCount) {
672  this.mConnectRetryCount = connectRetryCount;
673  }
674 
682  public int getConnectRetryInterval() {
683  return mConnectRetryInterval;
684  }
685 
693  public void setConnectRetryInterval(int connectRetryInterval) {
694  this.mConnectRetryInterval = connectRetryInterval;
695  }
696 
704  public boolean isPushMirror() {
705  return mPushMirror;
706  }
707 
715  public void setPushMirror(boolean pushMirror) {
716  this.mPushMirror = pushMirror;
717  }
718 
728  return mVideoEncodeMode;
729  }
730 
739  public void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode) {
740  this.mVideoEncodeMode = videoEncodeMode;
741  }
742 
752  return mVideoEncodeType;
753  }
754 
763  public void setVideoEncodeType(AlivcEncodeType videoEncodeType) {
764  this.mVideoEncodeType = videoEncodeType;
765  }
766 
776  return mAudioEncodeMode;
777  }
778 
787  public void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode) {
788  this.mAudioEncodeMode = audioEncodeMode;
789  }
790 
796  public int getWidth() {
797  return mWidth;
798  }
799 
805  public int getHeight() {
806  return mHeight;
807  }
808 
816  public int getAudioChannels() {
817  return mAudioChannels.getChannelCount();
818  }
819 
827  public void setAudioChannels(AlivcAudioChannelEnum audioChannels) {
828  mAudioChannels = audioChannels;
829  }
830 
838  public int getVideoEncodeGop() {
839  return mVideoEncodeGop.getGop();
840  }
841 
849  public void setVideoEncodeGop(AlivcVideoEncodeGopEnum videoEncodeGop) {
850  mVideoEncodeGop = videoEncodeGop;
851  }
852 
862  public int getExposure() {
863  return mExposure;
864  }
865 
875  public void setExposure(int exposure) {
876  this.mExposure = exposure;
877  }
878 
891  mUseAliPlayerForBGM = useAliPlayerForBGM;
892  }
893 
905  public boolean useAliPlayerForBGM() {
906  return mUseAliPlayerForBGM;
907  }
908 
918  public void setEnableNarrowbandHDForScreenPusher(boolean enable) {
919  enableNarrowbandHDForScreenPusher = enable;
920  }
921 
932  return enableNarrowbandHDForScreenPusher;
933  }
934 
945  public void setEnableSDKCrashMechanism(boolean enable) {
946  enableSDKCrashMechanism = enable;
947  }
948 
959  public boolean isEnableSDKCrashMechanism() {
960  return enableSDKCrashMechanism;
961  }
962 
971  public int getMinFps() {
972  return minFps.getFps();
973  }
974 
983  public void setMinFps(AlivcFpsEnum minFps) {
984  this.minFps = minFps;
985  }
986 
996  return audioProfile;
997  }
998 
1007  public void setAudioProfile(AlivcAudioAACProfileEnum audioProfile) {
1008  this.audioProfile = audioProfile;
1009  }
1010 
1018  public int getAudioBitRate() {
1019  return audioBitRate;
1020  }
1021 
1029  public void setAudioBitRate(int audioBitRate) {
1030  this.audioBitRate = audioBitRate;
1031  }
1032 
1044  return audioSceneMode;
1045  }
1046 
1057  public void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode) {
1058  this.audioSceneMode = audioSceneMode;
1059  }
1060 
1069  public void setQualityMode(AlivcQualityModeEnum quality) {
1070  this.qualityMode = quality;
1071  }
1072 
1082  return qualityMode;
1083  }
1084 
1092  return mediaProjectionPermissionResultData;
1093  }
1094 
1101  public static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData) {
1102  AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1103  }
1104 
1112  public boolean isEnableBitrateControl() {
1113  return enableBitrateControl;
1114  }
1115 
1123  public void setEnableBitrateControl(boolean enableBitrateControl) {
1124  this.enableBitrateControl = enableBitrateControl;
1125  }
1126 
1134  public boolean isEnableAutoResolution() {
1135  return enableAutoResolution;
1136  }
1137 
1145  public void setEnableAutoResolution(boolean enableAutoResolution) {
1146  this.enableAutoResolution = enableAutoResolution;
1147  }
1148 
1156  public boolean isExternMainStream() {
1157  return externMainStream;
1158  }
1159 
1170  public void setExternMainStream(boolean externMainStream) {
1171  this.externMainStream = externMainStream;
1172  }
1173 
1186  public void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat) {
1187  this.externMainStream = externMainStream;
1188  mAlivcExternMainImageFormat = imageFormat;
1189  mAlivcExternMainSoundFormat = soundFormat;
1190  }
1191 
1201  return mAlivcExternMainImageFormat;
1202  }
1203 
1211  public void setAlivcExternMainImageFormat(AlivcImageFormat alivcExternMainImageFormat) {
1212  this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1213  }
1214 
1224  return mAlivcExternMainSoundFormat;
1225  }
1226 
1236  this.mAlivcExternMainSoundFormat = soundFormat;
1237  }
1238 
1248  return mPreviewDisplayMode;
1249  }
1250 
1260  this.mPreviewDisplayMode = displayMode;
1261  }
1262 
1271  public void setRequireRenderContextNotify(boolean enable) {
1272  this.requireGLSharedContext = enable;
1273  }
1274 
1284  return this.requireGLSharedContext;
1285  }
1286 
1294  public void setAudioCaptureWithoutMix(boolean on) {
1295  this.mAudioCaptureWithoutMix = on;
1296  }
1297 
1305  public boolean getAudioCaptureWithoutMix() {
1306  return mAudioCaptureWithoutMix;
1307  }
1308 
1321  @Deprecated
1322  public void addWaterMark(String path, float x, float y, float width) {
1323  WaterMarkInfo waterMarkInfo = new WaterMarkInfo();
1324  waterMarkInfo.mWaterMarkPath = path;
1325  waterMarkInfo.mWaterMarkCoordX = x;
1326  waterMarkInfo.mWaterMarkCoordY = y;
1327  waterMarkInfo.mWaterMarkWidth = width;
1328  if (waterMarkInfos.size() < 3) {
1329  waterMarkInfos.add(waterMarkInfo);
1330  }
1331  }
1332 
1336  @Deprecated
1337  public void clearWaterMark() {
1338  waterMarkInfos.clear();
1339  }
1340 
1346  @Deprecated
1347  public void removeWaterMark(String path) {
1348  for (WaterMarkInfo info : waterMarkInfos) {
1349  if (path != null && path.equals(info.mWaterMarkPath)) {
1350  waterMarkInfos.remove(info);
1351  break;
1352  }
1353  }
1354  }
1355 
1362  ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1363  return waterMarkInfos;
1364  }
1365 
1366 }
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)
Enumeration of streaming audio profile.
Enumeration of streaming image format.
Enumeration of streaming audio scene mode.
void setInitialVideoBitrate(int initialVideoBitrate)
void setAudioChannels(AlivcAudioChannelEnum audioChannels)
Enumeration of streaming video fps.
void setQualityMode(AlivcQualityModeEnum quality)
void setCameraType(AlivcLivePushCameraTypeEnum cameraType)
void setAudioProfile(AlivcAudioAACProfileEnum audioProfile)
void setResolution(AlivcResolutionEnum resolution)
Enumeration of streaming encode mode.
void setPreviewDisplayMode(AlivcPreviewDisplayMode displayMode)
void setConnectRetryInterval(int connectRetryInterval)
void setUseAliPlayerForBGM(boolean useAliPlayerForBGM)
Enumeration of streaming encode type.
void setExternMainStream(boolean externMainStream)
void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode)
void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode)
Enumeration of streaming audio sample rate.
void setAlivcExternMainSoundFormat(AlivcSoundFormat soundFormat)
static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData)
void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel)
void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat)
Enumeration of streaming video camera type.
void setVideoEncodeType(AlivcEncodeType videoEncodeType)
void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode)
Enumeration of streaming audio channel.
void setPreviewRotation(AlivcPreviewRotationEnum rotation)
void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation)
void setEnableBitrateControl(boolean enableBitrateControl)
void setConnectRetryCount(int connectRetryCount)