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 
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  //最小帧率
96  private AlivcFpsEnum minFps = AlivcFpsEnum.FPS_8;
97 
98  private boolean enableBitrateControl = true;
99  private boolean enableAutoResolution = false;
100 
101  private boolean initBitFlag = false;
102  private boolean minBitFlag = false;
103  private boolean targetBitFlag = false;
104 
105  private boolean externMainStream = false;
106 
107  private int sendDataTimeout = 3000;
108  private AlivcQualityModeEnum qualityMode = AlivcQualityModeEnum.QM_RESOLUTION_FIRST;
109 
111  private int audioBitRate = 64000;
113  private AlivcAudioSampleRateEnum mAudioSampleRate = AUDIO_SAMPLE_RATE_48000;
114  private String mPausePushImagePath = "";
115  private String mNetworkPoorPushImagePath = "";
116 
117  private boolean requireGLSharedContext = false;
118  private boolean mAudioCaptureWithoutMix = false;
119 
120  private String mExtraInfo;
121 
123 
124  public AlivcLivePushConfig() {
125  mediaProjectionPermissionResultData = null;
126  if (Build.MANUFACTURER.equals("Letv") || Build.MODEL.equals("Le X620")) {
127  mAudioCaptureWithoutMix = true;
128  }
129  }
130 
131  private ArrayList<WaterMarkInfo> waterMarkInfos = new ArrayList<>();
132 
133  public int getVideoFormat() {
134  return mVideoFormat;
135  }
136 
137  public void setVideoFormat(int videoFormat) {
138  this.mVideoFormat = videoFormat;
139  }
140 
141  public int getAudioFormat() {
142  return mAudioFormat;
143  }
144 
145  public void setAudioFormat(int audioFormat) {
146  this.mAudioFormat = audioFormat;
147  }
148 
161  public void setLivePushMode(AlivcLiveMode pushMode) {
162  this.mLivePushMode = pushMode;
163  }
164 
172  return mLivePushMode;
173  }
174 
175  private boolean checkLiveInteractiveMode() {
176  return mLivePushMode == AlivcLiveMode.AlivcLiveInteractiveMode;
177  }
178 
188  return mResolution;
189  }
190 
199  public void setResolution(AlivcResolutionEnum resolution) {
200  this.mResolution = resolution;
201 
202  if (!targetBitFlag) {
203  mTargetVideoBitrate = checkLiveInteractiveMode() ?
204  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getTargetBitrate(resolution);
205  }
206 
207  if (!initBitFlag) {
208  mInitialVideoBitrate = checkLiveInteractiveMode() ?
209  AlivcResolutionEnum.getInteractiveTargetBitrate(resolution) : AlivcResolutionEnum.getInitBitrate(resolution);
210  }
211 
212  if (!minBitFlag) {
213  mMinVideoBitrate = checkLiveInteractiveMode() ?
214  AlivcResolutionEnum.getInteractiveMinBitrate(resolution) : AlivcResolutionEnum.getMinBitrate(resolution);
215  }
216  this.mWidth = AlivcResolutionEnum.GetResolutionWidth(resolution);
217  this.mHeight = AlivcResolutionEnum.GetResolutionHeight(resolution);
218  }
219 
225  public String getExtraInfo() {
226  return mExtraInfo;
227  }
228 
236  public void setExtraInfo(String extraInfo) {
237  mExtraInfo = extraInfo;
238  }
239 
248  return monitorLevel;
249  }
250 
261  public void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel) {
262  this.monitorLevel = monitorLevel;
263  }
264 
270  public int getFps() {
271  return mFps.getFps();
272  }
273 
282  public void setFps(AlivcFpsEnum fps) {
283  this.mFps = fps;
284  }
285 
291  public int getTargetVideoBitrate() {
292  return mTargetVideoBitrate;
293  }
294 
300  public void setTargetVideoBitrate(int targetBitRate) {
301  this.mTargetVideoBitrate = targetBitRate;
302  this.targetBitFlag = true;
303  }
304 
310  public int getMinVideoBitrate() {
311  return mMinVideoBitrate;
312  }
313 
319  public void setMinVideoBitrate(int minBitrate) {
320  this.mMinVideoBitrate = minBitrate;
321  this.minBitFlag = true;
322  }
323 
329  public int getBFrames() {
330  return mBFrames;
331  }
332 
340  public void setBFrames(int bFrame) {
341  this.mBFrames = bFrame;
342  }
343 
353  return mAudioSampleRate;
354  }
355 
364  public void setAudioSampleRate(AlivcAudioSampleRateEnum audioSample) {
365  this.mAudioSampleRate = audioSample;
366  }
367 
375  public int getPreviewOrientation() {
376  return mPreviewOrientation.getOrientation();
377  }
378 
387  public void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation) {
388  this.mPreviewOrientation = previewOrientation;
389  }
390 
400  public int getPreviewRotation() {
401  return mPreviewRotation.getRotation();
402  }
403 
415  this.mPreviewRotation = rotation;
416  }
417 
425  public int getCameraType() {
426  return mCameraType.getCameraId();
427  }
428 
437  public void setCameraType(AlivcLivePushCameraTypeEnum cameraType) {
438  this.mCameraType = cameraType;
439  }
440 
448  public boolean isPreviewMirror() {
449  return mPreviewMirror;
450  }
451 
459  public void setPreviewMirror(boolean mirror) {
460  this.mPreviewMirror = mirror;
461  }
462 
470  public boolean isAudioOnly() {
471  return mAudioOnly;
472  }
473 
481  public void setAudioOnly(boolean audioOnly) {
482  this.mAudioOnly = audioOnly;
483  }
484 
490  public boolean isVideoOnly() {
491  return mVideoOnly;
492  }
493 
501  public void setVideoOnly(boolean videoOnly) {
502  this.mVideoOnly = videoOnly;
503  }
504 
512  public boolean isAutoFocus() {
513  return mAutoFocus;
514  }
515 
523  public void setAutoFocus(boolean autoFocus) {
524  this.mAutoFocus = autoFocus;
525  }
526 
534  public boolean isFocusBySensor() {
535  return mFocusBySensor;
536  }
537 
547  public void setFocusBySensor(boolean focusBySensor) {
548  this.mFocusBySensor = focusBySensor;
549  }
550 
558  public boolean isFlash() {
559  return mFlash;
560  }
561 
569  public void setFlash(boolean flash) {
570  this.mFlash = flash;
571  }
572 
580  public int getSendDataTimeout() {
581  return sendDataTimeout;
582  }
583 
591  public void setSendDataTimeout(int sendDataTimeout) {
592  this.sendDataTimeout = sendDataTimeout;
593  }
594 
600  public String getPausePushImage() {
601  return mPausePushImagePath;
602  }
603 
609  public void setPausePushImage(String path) {
610  mPausePushImagePath = path;
611  }
612 
618  public String getNetworkPoorPushImage() {
619  return mNetworkPoorPushImagePath;
620  }
621 
627  public void setNetworkPoorPushImage(String path) {
628  mNetworkPoorPushImagePath = path;
629  }
630 
636  public int getInitialVideoBitrate() {
637  return mInitialVideoBitrate;
638  }
639 
645  public void setInitialVideoBitrate(int initialVideoBitrate) {
646  this.mInitialVideoBitrate = initialVideoBitrate;
647  this.initBitFlag = true;
648  }
649 
657  public int getConnectRetryCount() {
658  return mConnectRetryCount;
659  }
660 
668  public void setConnectRetryCount(int connectRetryCount) {
669  this.mConnectRetryCount = connectRetryCount;
670  }
671 
679  public int getConnectRetryInterval() {
680  return mConnectRetryInterval;
681  }
682 
690  public void setConnectRetryInterval(int connectRetryInterval) {
691  this.mConnectRetryInterval = connectRetryInterval;
692  }
693 
701  public boolean isPushMirror() {
702  return mPushMirror;
703  }
704 
712  public void setPushMirror(boolean pushMirror) {
713  this.mPushMirror = pushMirror;
714  }
715 
725  return mVideoEncodeMode;
726  }
727 
736  public void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode) {
737  this.mVideoEncodeMode = videoEncodeMode;
738  }
739 
749  return mVideoEncodeType;
750  }
751 
760  public void setVideoEncodeType(AlivcEncodeType videoEncodeType) {
761  this.mVideoEncodeType = videoEncodeType;
762  }
763 
773  return mAudioEncodeMode;
774  }
775 
784  public void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode) {
785  this.mAudioEncodeMode = audioEncodeMode;
786  }
787 
793  public int getWidth() {
794  return mWidth;
795  }
796 
802  public int getHeight() {
803  return mHeight;
804  }
805 
813  public int getAudioChannels() {
814  return mAudioChannels.getChannelCount();
815  }
816 
824  public void setAudioChannels(AlivcAudioChannelEnum audioChannels) {
825  mAudioChannels = audioChannels;
826  }
827 
835  public int getVideoEncodeGop() {
836  return mVideoEncodeGop.getGop();
837  }
838 
846  public void setVideoEncodeGop(AlivcVideoEncodeGopEnum videoEncodeGop) {
847  mVideoEncodeGop = videoEncodeGop;
848  }
849 
859  public int getExposure() {
860  return mExposure;
861  }
862 
872  public void setExposure(int exposure) {
873  this.mExposure = exposure;
874  }
875 
886  mUseAliPlayerForBGM = useAliPlayerForBGM;
887  }
888 
898  public boolean useAliPlayerForBGM() {
899  return mUseAliPlayerForBGM;
900  }
901 
911  public void setEnableNarrowbandHDForScreenPusher(boolean enable) {
912  enableNarrowbandHDForScreenPusher = enable;
913  }
914 
925  return enableNarrowbandHDForScreenPusher;
926  }
927 
936  public int getMinFps() {
937  return minFps.getFps();
938  }
939 
948  public void setMinFps(AlivcFpsEnum minFps) {
949  this.minFps = minFps;
950  }
951 
961  return audioProfile;
962  }
963 
972  public void setAudioProfile(AlivcAudioAACProfileEnum audioProfile) {
973  this.audioProfile = audioProfile;
974  }
975 
983  public int getAudioBitRate() {
984  return audioBitRate;
985  }
986 
994  public void setAudioBitRate(int audioBitRate) {
995  this.audioBitRate = audioBitRate;
996  }
997 
1009  return audioSceneMode;
1010  }
1011 
1022  public void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode) {
1023  this.audioSceneMode = audioSceneMode;
1024  }
1025 
1034  public void setQualityMode(AlivcQualityModeEnum quality) {
1035  this.qualityMode = quality;
1036  }
1037 
1047  return qualityMode;
1048  }
1049 
1057  return mediaProjectionPermissionResultData;
1058  }
1059 
1066  public static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData) {
1067  AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1068  }
1069 
1077  public boolean isEnableBitrateControl() {
1078  return enableBitrateControl;
1079  }
1080 
1088  public void setEnableBitrateControl(boolean enableBitrateControl) {
1089  this.enableBitrateControl = enableBitrateControl;
1090  }
1091 
1099  public boolean isEnableAutoResolution() {
1100  return enableAutoResolution;
1101  }
1102 
1110  public void setEnableAutoResolution(boolean enableAutoResolution) {
1111  this.enableAutoResolution = enableAutoResolution;
1112  }
1113 
1121  public boolean isExternMainStream() {
1122  return externMainStream;
1123  }
1124 
1134  public void setExternMainStream(boolean externMainStream) {
1135  this.externMainStream = externMainStream;
1136  }
1137 
1149  public void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat) {
1150  this.externMainStream = externMainStream;
1151  mAlivcExternMainImageFormat = imageFormat;
1152  mAlivcExternMainSoundFormat = soundFormat;
1153  }
1154 
1164  return mAlivcExternMainImageFormat;
1165  }
1166 
1174  public void setAlivcExternMainImageFormat(AlivcImageFormat alivcExternMainImageFormat) {
1175  this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1176  }
1177 
1187  return mAlivcExternMainSoundFormat;
1188  }
1189 
1199  this.mAlivcExternMainSoundFormat = soundFormat;
1200  }
1201 
1211  return mPreviewDisplayMode;
1212  }
1213 
1223  this.mPreviewDisplayMode = displayMode;
1224  }
1225 
1234  public void setRequireRenderContextNotify(boolean enable) {
1235  this.requireGLSharedContext = enable;
1236  }
1237 
1247  return this.requireGLSharedContext;
1248  }
1249 
1257  public void setAudioCaptureWithoutMix(boolean on) {
1258  this.mAudioCaptureWithoutMix = on;
1259  }
1260 
1268  public boolean getAudioCaptureWithoutMix() {
1269  return mAudioCaptureWithoutMix;
1270  }
1271 
1284  @Deprecated
1285  public void addWaterMark(String path, float x, float y, float width) {
1286  WaterMarkInfo waterMarkInfo = new WaterMarkInfo();
1287  waterMarkInfo.mWaterMarkPath = path;
1288  waterMarkInfo.mWaterMarkCoordX = x;
1289  waterMarkInfo.mWaterMarkCoordY = y;
1290  waterMarkInfo.mWaterMarkWidth = width;
1291  if (waterMarkInfos.size() < 3) {
1292  waterMarkInfos.add(waterMarkInfo);
1293  }
1294  }
1295 
1299  @Deprecated
1300  public void clearWaterMark() {
1301  waterMarkInfos.clear();
1302  }
1303 
1309  @Deprecated
1310  public void removeWaterMark(String path) {
1311  for (WaterMarkInfo info : waterMarkInfos) {
1312  if (path != null && path.equals(info.mWaterMarkPath)) {
1313  waterMarkInfos.remove(info);
1314  break;
1315  }
1316  }
1317  }
1318 
1325  ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1326  return waterMarkInfos;
1327  }
1328 
1329 } // 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)