1package com.alivc.live.pusher;
3import static com.alivc.live.pusher.AlivcAudioSampleRateEnum.AUDIO_SAMPLE_RATE_48000;
4import static com.alivc.live.pusher.AlivcLivePushCameraTypeEnum.CAMERA_TYPE_FRONT;
5import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_MAX_DIFF_PTS;
6import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_MAX_TIMEOUT_COUNT;
7import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_AUDIO_ONLY;
8import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_AUTO_FOCUS;
9import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_FLASH;
10import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_AUDIO_RETRY_COUNT;
11import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_INIT_BITRATE;
12import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_MIN_BITRATE;
13import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_RETRY_INTERVAL;
14import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_INT_TARGET_BITRATE;
15import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_PREVIEW_MIRROR;
16import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_PUSH_MIRROR;
17import static com.alivc.live.pusher.AlivcLivePushConstants.DEFAULT_VALUE_VIDEO_ONLY;
18import static com.alivc.live.pusher.AlivcResolutionEnum.DEFAULT_VALUE_INT_DEFINITION;
20import android.content.Intent;
21import android.graphics.ImageFormat;
22import android.media.AudioFormat;
23import android.os.Build;
25import com.alivc.live.annotations.AlivcLiveMode;
27import java.io.Serializable;
28import java.util.ArrayList;
44 public static final String CONFIG =
"AlivcLivePushConfig";
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;
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;
68 private int mConnectRetryCount = DEFAULT_VALUE_INT_AUDIO_RETRY_COUNT;
69 private int mConnectRetryInterval = DEFAULT_VALUE_INT_RETRY_INTERVAL;
71 private long mPtsMaxDiff = DEFAULT_MAX_DIFF_PTS;
72 private int mMaxTimeoutCount = DEFAULT_MAX_TIMEOUT_COUNT;
80 private int mVideoFormat = ImageFormat.NV21;
81 private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
87 private int mExposure = 0;
89 private boolean mUseAliPlayerForBGM =
false;
91 private boolean enableNarrowbandHDForScreenPusher =
true;
93 private boolean enableRTSForInteractiveMode =
false;
98 private boolean enableBitrateControl =
true;
99 private boolean enableAutoResolution =
false;
101 private boolean initBitFlag =
false;
102 private boolean minBitFlag =
false;
103 private boolean targetBitFlag =
false;
105 private boolean externMainStream =
false;
107 private int sendDataTimeout = 3000;
111 private int audioBitRate = 64000;
114 private String mPausePushImagePath =
"";
115 private String mNetworkPoorPushImagePath =
"";
117 private boolean requireGLSharedContext =
false;
118 private boolean mAudioCaptureWithoutMix =
false;
120 private boolean h5CompatibleMode =
false;
122 private boolean enableDataChannelMessage =
false;
124 private String mExtraInfo;
126 private String userName;
131 mediaProjectionPermissionResultData =
null;
132 if (Build.MANUFACTURER.equals(
"Letv") || Build.MODEL.equals(
"Le X620")) {
133 mAudioCaptureWithoutMix =
true;
137 private ArrayList<WaterMarkInfo> waterMarkInfos =
new ArrayList<>();
139 public int getVideoFormat() {
143 public void setVideoFormat(
int videoFormat) {
144 this.mVideoFormat = videoFormat;
147 public int getAudioFormat() {
151 public void setAudioFormat(
int audioFormat) {
152 this.mAudioFormat = audioFormat;
170 this.mLivePushMode = pushMode;
182 return mLivePushMode;
185 private boolean checkLiveInteractiveMode() {
210 this.mResolution = resolution;
212 if (!targetBitFlag) {
242 mExtraInfo = extraInfo;
245 public String getUserName() {
249 public void setUserName(String userName) {
250 this.userName = userName;
260 return h5CompatibleMode;
273 this.h5CompatibleMode = h5CompatibleMode;
283 return enableDataChannelMessage;
293 this.enableDataChannelMessage = enableDataChannelMessage;
318 this.monitorLevel = monitorLevel;
348 return mTargetVideoBitrate;
357 this.mTargetVideoBitrate = targetBitRate;
358 this.targetBitFlag =
true;
367 return mMinVideoBitrate;
376 this.mMinVideoBitrate = minBitrate;
377 this.minBitFlag =
true;
397 this.mBFrames = bFrame;
409 return mAudioSampleRate;
421 this.mAudioSampleRate = audioSample;
444 this.mPreviewOrientation = previewOrientation;
471 this.mPreviewRotation = rotation;
494 this.mCameraType = cameraType;
505 return mPreviewMirror;
516 this.mPreviewMirror = mirror;
538 this.mAudioOnly = audioOnly;
558 this.mVideoOnly = videoOnly;
580 this.mAutoFocus = autoFocus;
591 return mFocusBySensor;
604 this.mFocusBySensor = focusBySensor;
637 return sendDataTimeout;
648 this.sendDataTimeout = sendDataTimeout;
658 return mPausePushImagePath;
668 mPausePushImagePath = path;
678 return mNetworkPoorPushImagePath;
688 mNetworkPoorPushImagePath = path;
697 return mInitialVideoBitrate;
706 this.mInitialVideoBitrate = initialVideoBitrate;
707 this.initBitFlag =
true;
718 return mConnectRetryCount;
729 this.mConnectRetryCount = connectRetryCount;
740 return mConnectRetryInterval;
751 this.mConnectRetryInterval = connectRetryInterval;
773 this.mPushMirror = pushMirror;
785 return mVideoEncodeMode;
797 this.mVideoEncodeMode = videoEncodeMode;
809 return mVideoEncodeType;
821 this.mVideoEncodeType = videoEncodeType;
833 return mAudioEncodeMode;
845 this.mAudioEncodeMode = audioEncodeMode;
885 mAudioChannels = audioChannels;
896 return mVideoEncodeGop.
getGop();
907 mVideoEncodeGop = videoEncodeGop;
933 this.mExposure = exposure;
959 return mUseAliPlayerForBGM;
972 enableNarrowbandHDForScreenPusher = enable;
985 return enableNarrowbandHDForScreenPusher;
995 return enableRTSForInteractiveMode;
1005 this.enableRTSForInteractiveMode = enableRTSForInteractiveMode;
1029 this.minFps = minFps;
1041 return audioProfile;
1053 this.audioProfile = audioProfile;
1064 return audioBitRate;
1075 this.audioBitRate = audioBitRate;
1089 return audioSceneMode;
1103 this.audioSceneMode = audioSceneMode;
1115 this.qualityMode = quality;
1137 return mediaProjectionPermissionResultData;
1147 AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1158 return enableBitrateControl;
1169 this.enableBitrateControl = enableBitrateControl;
1180 return enableAutoResolution;
1191 this.enableAutoResolution = enableAutoResolution;
1202 return externMainStream;
1215 this.externMainStream = externMainStream;
1230 this.externMainStream = externMainStream;
1231 mAlivcExternMainImageFormat = imageFormat;
1232 mAlivcExternMainSoundFormat = soundFormat;
1244 return mAlivcExternMainImageFormat;
1255 this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1267 return mAlivcExternMainSoundFormat;
1279 this.mAlivcExternMainSoundFormat = soundFormat;
1291 return mPreviewDisplayMode;
1303 this.mPreviewDisplayMode = displayMode;
1315 this.requireGLSharedContext = enable;
1327 return this.requireGLSharedContext;
1338 this.mAudioCaptureWithoutMix = on;
1349 return mAudioCaptureWithoutMix;
1367 waterMarkInfo.mWaterMarkPath = path;
1368 waterMarkInfo.mWaterMarkCoordX = x;
1369 waterMarkInfo.mWaterMarkCoordY = y;
1370 waterMarkInfo.mWaterMarkWidth = width;
1371 if (waterMarkInfos.size() < 3) {
1372 waterMarkInfos.add(waterMarkInfo);
1381 waterMarkInfos.clear();
1392 if (path !=
null && path.equals(info.mWaterMarkPath)) {
1393 waterMarkInfos.remove(info);
1406 return waterMarkInfos;
1410 public String toString() {
1411 return "AlivcLivePushConfig{" +
1412 "mLivePushMode=" + mLivePushMode +
1413 ", mResolution=" + mResolution +
1415 ", mTargetVideoBitrate=" + mTargetVideoBitrate +
1416 ", mMinVideoBitrate=" + mMinVideoBitrate +
1417 ", mInitialVideoBitrate=" + mInitialVideoBitrate +
1418 ", mBFrames=" + mBFrames +
1419 ", mPreviewOrientation=" + mPreviewOrientation +
1420 ", mPreviewRotation=" + mPreviewRotation +
1421 ", mPreviewDisplayMode=" + mPreviewDisplayMode +
1422 ", mCameraType=" + mCameraType +
1423 ", mPreviewMirror=" + mPreviewMirror +
1424 ", mPushMirror=" + mPushMirror +
1425 ", mAudioOnly=" + mAudioOnly +
1426 ", mVideoOnly=" + mVideoOnly +
1427 ", mAutoFocus=" + mAutoFocus +
1428 ", mFocusBySensor=" + mFocusBySensor +
1429 ", mFlash=" + mFlash +
1430 ", mConnectRetryCount=" + mConnectRetryCount +
1431 ", mConnectRetryInterval=" + mConnectRetryInterval +
1432 ", mPtsMaxDiff=" + mPtsMaxDiff +
1433 ", mMaxTimeoutCount=" + mMaxTimeoutCount +
1434 ", mAudioChannels=" + mAudioChannels +
1435 ", mVideoEncodeMode=" + mVideoEncodeMode +
1436 ", mVideoEncodeType=" + mVideoEncodeType +
1437 ", mAudioEncodeMode=" + mAudioEncodeMode +
1438 ", mVideoFormat=" + mVideoFormat +
1439 ", mAudioFormat=" + mAudioFormat +
1440 ", mAlivcExternMainImageFormat=" + mAlivcExternMainImageFormat +
1441 ", mAlivcExternMainSoundFormat=" + mAlivcExternMainSoundFormat +
1442 ", mVideoEncodeGop=" + mVideoEncodeGop +
1443 ", mExposure=" + mExposure +
1444 ", mUseAliPlayerForBGM=" + mUseAliPlayerForBGM +
1445 ", enableNarrowbandHDForScreenPusher=" + enableNarrowbandHDForScreenPusher +
1446 ", enableRTSForInteractiveMode=" + enableRTSForInteractiveMode +
1447 ", minFps=" + minFps +
1448 ", enableBitrateControl=" + enableBitrateControl +
1449 ", enableAutoResolution=" + enableAutoResolution +
1450 ", initBitFlag=" + initBitFlag +
1451 ", minBitFlag=" + minBitFlag +
1452 ", targetBitFlag=" + targetBitFlag +
1453 ", externMainStream=" + externMainStream +
1454 ", sendDataTimeout=" + sendDataTimeout +
1455 ", qualityMode=" + qualityMode +
1456 ", audioProfile=" + audioProfile +
1457 ", audioBitRate=" + audioBitRate +
1458 ", audioSceneMode=" + audioSceneMode +
1459 ", mAudioSampleRate=" + mAudioSampleRate +
1460 ", mPausePushImagePath='" + mPausePushImagePath +
'\'' +
1461 ", mNetworkPoorPushImagePath='" + mNetworkPoorPushImagePath +
'\'' +
1462 ", requireGLSharedContext=" + requireGLSharedContext +
1463 ", mAudioCaptureWithoutMix=" + mAudioCaptureWithoutMix +
1464 ", h5CompatibleMode=" + h5CompatibleMode +
1465 ", mExtraInfo='" + mExtraInfo +
'\'' +
1466 ", monitorLevel=" + monitorLevel +
1467 ", waterMarkInfos=" + waterMarkInfos +
AlivcAudioSampleRateEnum getAudioSampleRate()
void setAlivcExternMainSoundFormat(AlivcSoundFormat soundFormat)
void setPushMirror(boolean pushMirror)
void setMinFps(AlivcFpsEnum minFps)
boolean isEnableNarrowbandHDForScreenPusher()
AlivcEncodeType getVideoEncodeType()
void setExternMainStream(boolean externMainStream)
boolean isExternMainStream()
void setAudioSampleRate(AlivcAudioSampleRateEnum audioSample)
void setEnableBitrateControl(boolean enableBitrateControl)
void setNetworkPoorPushImage(String path)
AlivcLiveMode getLivePushMode()
AlivcPreviewDisplayMode getPreviewDisplayMode()
void setPreviewMirror(boolean mirror)
void setEnableRTSForInteractiveMode(boolean enableRTSForInteractiveMode)
void setAudioCaptureWithoutMix(boolean on)
void setEnableNarrowbandHDForScreenPusher(boolean enable)
boolean isH5CompatibleMode()
AlivcSoundFormat getAlivcExternMainSoundFormat()
void setVideoEncodeGop(AlivcVideoEncodeGopEnum videoEncodeGop)
void setAutoFocus(boolean autoFocus)
void setResolution(AlivcResolutionEnum resolution)
void setAudioChannels(AlivcAudioChannelEnum audioChannels)
boolean isEnableDataChannelMessage()
void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat)
void setFocusBySensor(boolean focusBySensor)
static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData)
boolean getRequireRenderContextNotify()
void setMinVideoBitrate(int minBitrate)
void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode)
void setAudioOnly(boolean audioOnly)
void setAudioProfile(AlivcAudioAACProfileEnum audioProfile)
void setConnectRetryInterval(int connectRetryInterval)
void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode)
void setEnableDataChannelMessage(boolean enableDataChannelMessage)
void setCameraType(AlivcLivePushCameraTypeEnum cameraType)
void setRequireRenderContextNotify(boolean enable)
String getNetworkPoorPushImage()
void addWaterMark(String path, float x, float y, float width)
boolean isFocusBySensor()
boolean isEnableRTSForInteractiveMode()
int getConnectRetryCount()
AlivcLivePushMonitorLevel getMonitorLevel()
void setPreviewDisplayMode(AlivcPreviewDisplayMode displayMode)
void setEnableAutoResolution(boolean enableAutoResolution)
boolean isPreviewMirror()
String getPausePushImage()
AlivcEncodeModeEnum getAudioEncodeMode()
AlivcAudioSceneModeEnum getAudioSceneMode()
AlivcAudioAACProfileEnum getAudioProfile()
boolean useAliPlayerForBGM()
int getConnectRetryInterval()
void setAudioBitRate(int audioBitRate)
void setUseAliPlayerForBGM(boolean useAliPlayerForBGM)
int getPreviewOrientation()
void setPreviewRotation(AlivcPreviewRotationEnum rotation)
void setConnectRetryCount(int connectRetryCount)
boolean isEnableBitrateControl()
void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel)
void setH5CompatibleMode(boolean h5CompatibleMode)
AlivcQualityModeEnum getQualityMode()
int getInitialVideoBitrate()
void setVideoOnly(boolean videoOnly)
void setFps(AlivcFpsEnum fps)
void setVideoEncodeType(AlivcEncodeType videoEncodeType)
void setQualityMode(AlivcQualityModeEnum quality)
void setSendDataTimeout(int sendDataTimeout)
ArrayList< WaterMarkInfo > getWaterMarkInfos()
void setFlash(boolean flash)
void setExposure(int exposure)
void setLivePushMode(AlivcLiveMode pushMode)
Intent getMediaProjectionPermissionResultData()
void setInitialVideoBitrate(int initialVideoBitrate)
boolean isEnableAutoResolution()
void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation)
void setBFrames(int bFrame)
AlivcResolutionEnum getResolution()
int getTargetVideoBitrate()
void setAlivcExternMainImageFormat(AlivcImageFormat alivcExternMainImageFormat)
AlivcEncodeModeEnum getVideoEncodeMode()
void setTargetVideoBitrate(int targetBitRate)
void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode)
boolean getAudioCaptureWithoutMix()
AlivcImageFormat getAlivcExternMainImageFormat()
void setPausePushImage(String path)
void setExtraInfo(String extraInfo)
void removeWaterMark(String path)
ALIVC_LIVE_PUSHER_PREVIEW_ASPECT_FIT
static int getMinBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getTargetBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getResolutionWidth(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getInitBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
static int getResolutionHeight(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)