1 package com.alivc.live.pusher;
20 import android.content.Intent;
21 import android.graphics.ImageFormat;
22 import android.media.AudioFormat;
23 import android.os.Build;
27 import java.io.Serializable;
28 import 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;
67 private int mHeight =
AlivcResolutionEnum.GetResolutionHeight(DEFAULT_VALUE_INT_DEFINITION);
70 private int mConnectRetryCount = DEFAULT_VALUE_INT_AUDIO_RETRY_COUNT;
71 private int mConnectRetryInterval = DEFAULT_VALUE_INT_RETRY_INTERVAL;
73 private long mPtsMaxDiff = DEFAULT_MAX_DIFF_PTS;
74 private int mMaxTimeoutCount = DEFAULT_MAX_TIMEOUT_COUNT;
82 private int mVideoFormat = ImageFormat.NV21;
83 private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
89 private int mExposure = 0;
91 private boolean mUseAliPlayerForBGM =
false;
93 private boolean enableNarrowbandHDForScreenPusher =
true;
95 private boolean enableSDKCrashMechanism =
true;
100 private boolean enableBitrateControl =
true;
101 private boolean enableAutoResolution =
false;
103 private boolean initBitFlag =
false;
104 private boolean minBitFlag =
false;
105 private boolean targetBitFlag =
false;
107 private boolean externMainStream =
false;
109 private int sendDataTimeout = 3000;
113 private int audioBitRate = 64000;
116 private String mPausePushImagePath =
"";
117 private String mNetworkPoorPushImagePath =
"";
119 private boolean requireGLSharedContext =
false;
120 private boolean mAudioCaptureWithoutMix =
false;
122 private String mExtraInfo;
127 mediaProjectionPermissionResultData = null;
128 if (Build.MANUFACTURER.equals(
"Letv") || Build.MODEL.equals(
"Le X620")) {
129 mAudioCaptureWithoutMix =
true;
133 private ArrayList<WaterMarkInfo> waterMarkInfos =
new ArrayList<>();
135 public int getVideoFormat() {
139 public void setVideoFormat(
int videoFormat) {
140 this.mVideoFormat = videoFormat;
143 public int getAudioFormat() {
147 public void setAudioFormat(
int audioFormat) {
148 this.mAudioFormat = audioFormat;
164 this.mLivePushMode = pushMode;
174 return mLivePushMode;
177 private boolean checkLiveInteractiveMode() {
202 this.mResolution = resolution;
204 if (!targetBitFlag) {
205 mTargetVideoBitrate = checkLiveInteractiveMode() ?
210 mInitialVideoBitrate = checkLiveInteractiveMode() ?
215 mMinVideoBitrate = checkLiveInteractiveMode() ?
239 mExtraInfo = extraInfo;
264 this.monitorLevel = monitorLevel;
294 return mTargetVideoBitrate;
303 this.mTargetVideoBitrate = targetBitRate;
304 this.targetBitFlag =
true;
313 return mMinVideoBitrate;
322 this.mMinVideoBitrate = minBitrate;
323 this.minBitFlag =
true;
343 this.mBFrames = bFrame;
355 return mAudioSampleRate;
367 this.mAudioSampleRate = audioSample;
390 this.mPreviewOrientation = previewOrientation;
417 this.mPreviewRotation = rotation;
440 this.mCameraType = cameraType;
451 return mPreviewMirror;
462 this.mPreviewMirror = mirror;
484 this.mAudioOnly = audioOnly;
504 this.mVideoOnly = videoOnly;
526 this.mAutoFocus = autoFocus;
537 return mFocusBySensor;
550 this.mFocusBySensor = focusBySensor;
583 return sendDataTimeout;
594 this.sendDataTimeout = sendDataTimeout;
603 return mPausePushImagePath;
612 mPausePushImagePath = path;
621 return mNetworkPoorPushImagePath;
630 mNetworkPoorPushImagePath = path;
639 return mInitialVideoBitrate;
648 this.mInitialVideoBitrate = initialVideoBitrate;
649 this.initBitFlag =
true;
660 return mConnectRetryCount;
671 this.mConnectRetryCount = connectRetryCount;
682 return mConnectRetryInterval;
693 this.mConnectRetryInterval = connectRetryInterval;
715 this.mPushMirror = pushMirror;
727 return mVideoEncodeMode;
739 this.mVideoEncodeMode = videoEncodeMode;
751 return mVideoEncodeType;
763 this.mVideoEncodeType = videoEncodeType;
775 return mAudioEncodeMode;
787 this.mAudioEncodeMode = audioEncodeMode;
827 mAudioChannels = audioChannels;
838 return mVideoEncodeGop.
getGop();
849 mVideoEncodeGop = videoEncodeGop;
875 this.mExposure = exposure;
901 return mUseAliPlayerForBGM;
914 enableNarrowbandHDForScreenPusher = enable;
927 return enableNarrowbandHDForScreenPusher;
941 enableSDKCrashMechanism = enable;
955 return enableSDKCrashMechanism;
979 this.minFps = minFps;
1003 this.audioProfile = audioProfile;
1014 return audioBitRate;
1025 this.audioBitRate = audioBitRate;
1039 return audioSceneMode;
1053 this.audioSceneMode = audioSceneMode;
1065 this.qualityMode = quality;
1087 return mediaProjectionPermissionResultData;
1097 AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1108 return enableBitrateControl;
1119 this.enableBitrateControl = enableBitrateControl;
1130 return enableAutoResolution;
1141 this.enableAutoResolution = enableAutoResolution;
1152 return externMainStream;
1165 this.externMainStream = externMainStream;
1180 this.externMainStream = externMainStream;
1181 mAlivcExternMainImageFormat = imageFormat;
1182 mAlivcExternMainSoundFormat = soundFormat;
1194 return mAlivcExternMainImageFormat;
1205 this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1217 return mAlivcExternMainSoundFormat;
1229 this.mAlivcExternMainSoundFormat = soundFormat;
1241 return mPreviewDisplayMode;
1253 this.mPreviewDisplayMode = displayMode;
1265 this.requireGLSharedContext = enable;
1277 return this.requireGLSharedContext;
1288 this.mAudioCaptureWithoutMix = on;
1299 return mAudioCaptureWithoutMix;
1321 if (waterMarkInfos.size() < 3) {
1322 waterMarkInfos.add(waterMarkInfo);
1331 waterMarkInfos.clear();
1342 if (path != null && path.equals(info.mWaterMarkPath)) {
1343 waterMarkInfos.remove(info);
1355 ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1356 return waterMarkInfos;
AlivcLivePushMonitorLevel getMonitorLevel()
void setBFrames(int bFrame)
AlivcResolutionEnum getResolution()
AlivcEncodeType getVideoEncodeType()
void setNetworkPoorPushImage(String path)
AlivcLiveMode getLivePushMode()
void setFocusBySensor(boolean focusBySensor)
void setLivePushMode(AlivcLiveMode pushMode)
int getPreviewOrientation()
void setAlivcExternMainImageFormat(AlivcImageFormat alivcExternMainImageFormat)
void addWaterMark(String path, float x, float y, float width)
void setVideoEncodeGop(AlivcVideoEncodeGopEnum videoEncodeGop)
String getPausePushImage()
boolean isPreviewMirror()
void setFps(AlivcFpsEnum fps)
void setAudioOnly(boolean audioOnly)
void setVideoOnly(boolean videoOnly)
AlivcEncodeModeEnum getAudioEncodeMode()
void setAudioSampleRate(AlivcAudioSampleRateEnum audioSample)
String getNetworkPoorPushImage()
AlivcPreviewDisplayMode getPreviewDisplayMode()
boolean isExternMainStream()
void setFlash(boolean flash)
void setEnableAutoResolution(boolean enableAutoResolution)
AlivcImageFormat getAlivcExternMainImageFormat()
void setEnableNarrowbandHDForScreenPusher(boolean enable)
void setAudioCaptureWithoutMix(boolean on)
void setInitialVideoBitrate(int initialVideoBitrate)
void setPausePushImage(String path)
int getTargetVideoBitrate()
void setAudioChannels(AlivcAudioChannelEnum audioChannels)
void setQualityMode(AlivcQualityModeEnum quality)
void setExposure(int exposure)
AlivcAudioSceneModeEnum getAudioSceneMode()
void setCameraType(AlivcLivePushCameraTypeEnum cameraType)
void setAudioProfile(AlivcAudioAACProfileEnum audioProfile)
void setResolution(AlivcResolutionEnum resolution)
void setPreviewDisplayMode(AlivcPreviewDisplayMode displayMode)
void setMinFps(AlivcFpsEnum minFps)
void setTargetVideoBitrate(int targetBitRate)
boolean useAliPlayerForBGM()
void setExtraInfo(String extraInfo)
void setConnectRetryInterval(int connectRetryInterval)
AlivcQualityModeEnum getQualityMode()
boolean getAudioCaptureWithoutMix()
int getConnectRetryCount()
void setUseAliPlayerForBGM(boolean useAliPlayerForBGM)
void setExternMainStream(boolean externMainStream)
boolean isEnableSDKCrashMechanism()
boolean isFocusBySensor()
void setMinVideoBitrate(int minBitrate)
AlivcAudioAACProfileEnum getAudioProfile()
boolean getRequireRenderContextNotify()
void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode)
int getConnectRetryInterval()
void setPushMirror(boolean pushMirror)
Intent getMediaProjectionPermissionResultData()
void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode)
void setSendDataTimeout(int sendDataTimeout)
void setRequireRenderContextNotify(boolean enable)
void setAlivcExternMainSoundFormat(AlivcSoundFormat soundFormat)
int getInitialVideoBitrate()
void setPreviewMirror(boolean mirror)
void setEnableSDKCrashMechanism(boolean enable)
AlivcSoundFormat getAlivcExternMainSoundFormat()
boolean isEnableNarrowbandHDForScreenPusher()
static void setMediaProjectionPermissionResultData(Intent mediaProjectionPermissionResultData)
void setMonitorLevel(AlivcLivePushMonitorLevel monitorLevel)
void setExternMainStream(boolean externMainStream, AlivcImageFormat imageFormat, AlivcSoundFormat soundFormat)
void setAutoFocus(boolean autoFocus)
boolean isEnableAutoResolution()
boolean isEnableBitrateControl()
void setVideoEncodeType(AlivcEncodeType videoEncodeType)
void setAudioBitRate(int audioBitRate)
void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode)
AlivcAudioSampleRateEnum getAudioSampleRate()
void setPreviewRotation(AlivcPreviewRotationEnum rotation)
ALIVC_LIVE_PUSHER_PREVIEW_ASPECT_FIT
void setPreviewOrientation(AlivcPreviewOrientationEnum previewOrientation)
void setEnableBitrateControl(boolean enableBitrateControl)
void setConnectRetryCount(int connectRetryCount)
void removeWaterMark(String path)
AlivcEncodeModeEnum getVideoEncodeMode()