AliVCSDK  6.0.0
阿里云音视频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  //最小帧率
93  private AlivcFpsEnum minFps = AlivcFpsEnum.FPS_8;
94 
95  private boolean enableBitrateControl = true;
96  private boolean enableAutoResolution = false;
97 
98  private boolean initBitFlag = false;
99  private boolean minBitFlag = false;
100  private boolean targetBitFlag = false;
101 
102  private boolean externMainStream = false;
103 
104  private int sendDataTimeout = 3000;
106 
108  private int audioBitRate = 64000;
110  private AlivcAudioSampleRateEnum mAudioSampleRate = AUDIO_SAMPLE_RATE_48000;
111  private String mPausePushImagePath = "";
112  private String mNetworkPoorPushImagePath = "";
113 
114  private boolean requireGLSharedContext = false;
115  private boolean mAudioCaptureWithoutMix = false;
116 
117  private String mExtraInfo;
118 
120 
121  public AlivcLivePushConfig() {
122  mediaProjectionPermissionResultData = null;
123  if (Build.MANUFACTURER.equals("Letv") || Build.MODEL.equals("Le X620")) {
124  mAudioCaptureWithoutMix = true;
125  }
126  }
127 
128  private ArrayList<WaterMarkInfo> waterMarkInfos = new ArrayList<>();
129 
130  public int getVideoFormat() {
131  return mVideoFormat;
132  }
133 
134  public void setVideoFormat(int videoFormat) {
135  this.mVideoFormat = videoFormat;
136  }
137 
138  public int getAudioFormat() {
139  return mAudioFormat;
140  }
141 
142  public void setAudioFormat(int audioFormat) {
143  this.mAudioFormat = audioFormat;
144  }
145 
158  public void setLivePushMode(AlivcLiveMode pushMode) {
159  this.mLivePushMode = pushMode;
160  }
161 
169  return mLivePushMode;
170  }
171 
172  private boolean checkLiveInteractiveMode() {
173  return mLivePushMode == AlivcLiveMode.AlivcLiveInteractiveMode;
174  }
175 
185  return mResolution;
186  }
187 
196  public void setResolution(AlivcResolutionEnum resolution) {
197  this.mResolution = resolution;
198 
199  if (!targetBitFlag) {
200  mTargetVideoBitrate = checkLiveInteractiveMode() ?
201  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getTargetBitrate(resolution);
202  }
203 
204  if (!initBitFlag) {
205  mInitialVideoBitrate = checkLiveInteractiveMode() ?
206  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getInitBitrate(resolution);
207  }
208 
209  if (!minBitFlag) {
210  mMinVideoBitrate = checkLiveInteractiveMode() ?
211  AlivcResolutionEnum.getInteractiveMinBitrate(resolution) : AlivcResolutionEnum.getMinBitrate(resolution);
212  }
213  this.mWidth = AlivcResolutionEnum.GetResolutionWidth(resolution);
214  this.mHeight = AlivcResolutionEnum.GetResolutionHeight(resolution);
215  }
216 
222  public String getExtraInfo() {
223  return mExtraInfo;
224  }
225 
233  public void setExtraInfo(String extraInfo) {
234  mExtraInfo = extraInfo;
235  }
236 
245  return monitorLevel;
246  }
247 
258  public void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel) {
259  this.monitorLevel = monitorLevel;
260  }
261 
267  public int getFps() {
268  return mFps.getFps();
269  }
270 
279  public void setFps(AlivcFpsEnum fps) {
280  this.mFps = fps;
281  }
282 
288  public int getTargetVideoBitrate() {
289  return mTargetVideoBitrate;
290  }
291 
297  public void setTargetVideoBitrate(int targetBitRate) {
298  this.mTargetVideoBitrate = targetBitRate;
299  this.targetBitFlag = true;
300  }
301 
307  public int getMinVideoBitrate() {
308  return mMinVideoBitrate;
309  }
310 
316  public void setMinVideoBitrate(int minBitrate) {
317  this.mMinVideoBitrate = minBitrate;
318  this.minBitFlag = true;
319  }
320 
328  public int getBFrames() {
329  return mBFrames;
330  }
331 
339  public void setBFrames(int bFrame) {
340  this.mBFrames = bFrame;
341  }
342 
352  return mAudioSampleRate;
353  }
354 
363  public void setAudioSampleRate(AlivcAudioSampleRateEnum audioSample) {
364  this.mAudioSampleRate = audioSample;
365  }
366 
374  public int getPreviewOrientation() {
375  return mPreviewOrientation.getOrientation();
376  }
377 
386  public void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation) {
387  this.mPreviewOrientation = previewOrientation;
388  }
389 
399  public int getPreviewRotation() {
400  return mPreviewRotation.getRotation();
401  }
402 
414  this.mPreviewRotation = rotation;
415  }
416 
424  public int getCameraType() {
425  return mCameraType.getCameraId();
426  }
427 
436  public void setCameraType(AlivcLivePushCameraTypeEnum cameraType) {
437  this.mCameraType = cameraType;
438  }
439 
447  public boolean isPreviewMirror() {
448  return mPreviewMirror;
449  }
450 
458  public void setPreviewMirror(boolean mirror) {
459  this.mPreviewMirror = mirror;
460  }
461 
469  public boolean isAudioOnly() {
470  return mAudioOnly;
471  }
472 
480  public void setAudioOnly(boolean audioOnly) {
481  this.mAudioOnly = audioOnly;
482  }
483 
491  public boolean isVideoOnly() {
492  return mVideoOnly;
493  }
494 
502  public void setVideoOnly(boolean videoOnly) {
503  this.mVideoOnly = videoOnly;
504  }
505 
513  public boolean isAutoFocus() {
514  return mAutoFocus;
515  }
516 
524  public void setAutoFocus(boolean autoFocus) {
525  this.mAutoFocus = autoFocus;
526  }
527 
535  public boolean isFocusBySensor() {
536  return mFocusBySensor;
537  }
538 
548  public void setFocusBySensor(boolean focusBySensor) {
549  this.mFocusBySensor = focusBySensor;
550  }
551 
559  public boolean isFlash() {
560  return mFlash;
561  }
562 
570  public void setFlash(boolean flash) {
571  this.mFlash = flash;
572  }
573 
581  public int getSendDataTimeout() {
582  return sendDataTimeout;
583  }
584 
592  public void setSendDataTimeout(int sendDataTimeout) {
593  this.sendDataTimeout = sendDataTimeout;
594  }
595 
601  public String getPausePushImage() {
602  return mPausePushImagePath;
603  }
604 
610  public void setPausePushImage(String path) {
611  mPausePushImagePath = path;
612  }
613 
619  public String getNetworkPoorPushImage() {
620  return mNetworkPoorPushImagePath;
621  }
622 
628  public void setNetworkPoorPushImage(String path) {
629  mNetworkPoorPushImagePath = path;
630  }
631 
637  public int getInitialVideoBitrate() {
638  return mInitialVideoBitrate;
639  }
640 
646  public void setInitialVideoBitrate(int initialVideoBitrate) {
647  this.mInitialVideoBitrate = initialVideoBitrate;
648  this.initBitFlag = true;
649  }
650 
658  public int getConnectRetryCount() {
659  return mConnectRetryCount;
660  }
661 
669  public void setConnectRetryCount(int connectRetryCount) {
670  this.mConnectRetryCount = connectRetryCount;
671  }
672 
680  public int getConnectRetryInterval() {
681  return mConnectRetryInterval;
682  }
683 
691  public void setConnectRetryInterval(int connectRetryInterval) {
692  this.mConnectRetryInterval = connectRetryInterval;
693  }
694 
702  public boolean isPushMirror() {
703  return mPushMirror;
704  }
705 
713  public void setPushMirror(boolean pushMirror) {
714  this.mPushMirror = pushMirror;
715  }
716 
726  return mVideoEncodeMode;
727  }
728 
737  public void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode) {
738  this.mVideoEncodeMode = videoEncodeMode;
739  }
740 
750  return mVideoEncodeType;
751  }
752 
761  public void setVideoEncodeType(AlivcEncodeType videoEncodeType) {
762  this.mVideoEncodeType = videoEncodeType;
763  }
764 
774  return mAudioEncodeMode;
775  }
776 
785  public void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode) {
786  this.mAudioEncodeMode = audioEncodeMode;
787  }
788 
794  public int getWidth() {
795  return mWidth;
796  }
797 
803  public int getHeight() {
804  return mHeight;
805  }
806 
814  public int getAudioChannels() {
815  return mAudioChannels.getChannelCount();
816  }
817 
825  public void setAudioChannels(AlivcAudioChannelEnum audioChannels) {
826  mAudioChannels = audioChannels;
827  }
828 
836  public int getVideoEncodeGop() {
837  return mVideoEncodeGop.getGop();
838  }
839 
847  public void setVideoEncodeGop(AlivcVideoEncodeGopEnum videoEncodeGop) {
848  mVideoEncodeGop = videoEncodeGop;
849  }
850 
860  public int getExposure() {
861  return mExposure;
862  }
863 
873  public void setExposure(int exposure) {
874  this.mExposure = exposure;
875  }
876 
889  mUseAliPlayerForBGM = useAliPlayerForBGM;
890  }
891 
903  public boolean useAliPlayerForBGM() {
904  return mUseAliPlayerForBGM;
905  }
906 
916  public void setEnableNarrowbandHDForScreenPusher(boolean enable) {
917  enableNarrowbandHDForScreenPusher = enable;
918  }
919 
930  return enableNarrowbandHDForScreenPusher;
931  }
932 
941  public int getMinFps() {
942  return minFps.getFps();
943  }
944 
953  public void setMinFps(AlivcFpsEnum minFps) {
954  this.minFps = minFps;
955  }
956 
966  return audioProfile;
967  }
968 
977  public void setAudioProfile(AlivcAudioAACProfileEnum audioProfile) {
978  this.audioProfile = audioProfile;
979  }
980 
988  public int getAudioBitRate() {
989  return audioBitRate;
990  }
991 
999  public void setAudioBitRate(int audioBitRate) {
1000  this.audioBitRate = audioBitRate;
1001  }
1002 
1014  return audioSceneMode;
1015  }
1016 
1027  public void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode) {
1028  this.audioSceneMode = audioSceneMode;
1029  }
1030 
1039  public void setQualityMode(AlivcQualityModeEnum quality) {
1040  this.qualityMode = quality;
1041  }
1042 
1052  return qualityMode;
1053  }
1054 
1062  return mediaProjectionPermissionResultData;
1063  }
1064 
1071  public static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData) {
1072  AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1073  }
1074 
1082  public boolean isEnableBitrateControl() {
1083  return enableBitrateControl;
1084  }
1085 
1093  public void setEnableBitrateControl(boolean enableBitrateControl) {
1094  this.enableBitrateControl = enableBitrateControl;
1095  }
1096 
1104  public boolean isEnableAutoResolution() {
1105  return enableAutoResolution;
1106  }
1107 
1115  public void setEnableAutoResolution(boolean enableAutoResolution) {
1116  this.enableAutoResolution = enableAutoResolution;
1117  }
1118 
1126  public boolean isExternMainStream() {
1127  return externMainStream;
1128  }
1129 
1140  public void setExternMainStream(boolean externMainStream) {
1141  this.externMainStream = externMainStream;
1142  }
1143 
1156  public void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat) {
1157  this.externMainStream = externMainStream;
1158  mAlivcExternMainImageFormat = imageFormat;
1159  mAlivcExternMainSoundFormat = soundFormat;
1160  }
1161 
1171  return mAlivcExternMainImageFormat;
1172  }
1173 
1181  public void setAlivcExternMainImageFormat(AlivcImageFormat alivcExternMainImageFormat) {
1182  this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1183  }
1184 
1194  return mAlivcExternMainSoundFormat;
1195  }
1196 
1206  this.mAlivcExternMainSoundFormat = soundFormat;
1207  }
1208 
1218  return mPreviewDisplayMode;
1219  }
1220 
1230  this.mPreviewDisplayMode = displayMode;
1231  }
1232 
1241  public void setRequireRenderContextNotify(boolean enable) {
1242  this.requireGLSharedContext = enable;
1243  }
1244 
1254  return this.requireGLSharedContext;
1255  }
1256 
1264  public void setAudioCaptureWithoutMix(boolean on) {
1265  this.mAudioCaptureWithoutMix = on;
1266  }
1267 
1275  public boolean getAudioCaptureWithoutMix() {
1276  return mAudioCaptureWithoutMix;
1277  }
1278 
1291  @Deprecated
1292  public void addWaterMark(String path, float x, float y, float width) {
1293  WaterMarkInfo waterMarkInfo = new WaterMarkInfo();
1294  waterMarkInfo.mWaterMarkPath = path;
1295  waterMarkInfo.mWaterMarkCoordX = x;
1296  waterMarkInfo.mWaterMarkCoordY = y;
1297  waterMarkInfo.mWaterMarkWidth = width;
1298  if (waterMarkInfos.size() < 3) {
1299  waterMarkInfos.add(waterMarkInfo);
1300  }
1301  }
1302 
1306  @Deprecated
1307  public void clearWaterMark() {
1308  waterMarkInfos.clear();
1309  }
1310 
1316  @Deprecated
1317  public void removeWaterMark(String path) {
1318  for (WaterMarkInfo info : waterMarkInfos) {
1319  if (path != null && path.equals(info.mWaterMarkPath)) {
1320  waterMarkInfos.remove(info);
1321  break;
1322  }
1323  }
1324  }
1325 
1332  ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1333  return waterMarkInfos;
1334  }
1335 
1336 }
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)