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;
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 String mExtraInfo;
125 mediaProjectionPermissionResultData = null;
126 if (Build.MANUFACTURER.equals(
"Letv") || Build.MODEL.equals(
"Le X620")) {
127 mAudioCaptureWithoutMix =
true;
131 private ArrayList<WaterMarkInfo> waterMarkInfos =
new ArrayList<>();
133 public int getVideoFormat() {
137 public void setVideoFormat(
int videoFormat) {
138 this.mVideoFormat = videoFormat;
141 public int getAudioFormat() {
145 public void setAudioFormat(
int audioFormat) {
146 this.mAudioFormat = audioFormat;
162 this.mLivePushMode = pushMode;
172 return mLivePushMode;
175 private boolean checkLiveInteractiveMode() {
200 this.mResolution = resolution;
202 if (!targetBitFlag) {
203 mTargetVideoBitrate = checkLiveInteractiveMode() ?
208 mInitialVideoBitrate = checkLiveInteractiveMode() ?
213 mMinVideoBitrate = checkLiveInteractiveMode() ?
237 mExtraInfo = extraInfo;
262 this.monitorLevel = monitorLevel;
292 return mTargetVideoBitrate;
301 this.mTargetVideoBitrate = targetBitRate;
302 this.targetBitFlag =
true;
311 return mMinVideoBitrate;
320 this.mMinVideoBitrate = minBitrate;
321 this.minBitFlag =
true;
341 this.mBFrames = bFrame;
353 return mAudioSampleRate;
365 this.mAudioSampleRate = audioSample;
388 this.mPreviewOrientation = previewOrientation;
415 this.mPreviewRotation = rotation;
438 this.mCameraType = cameraType;
449 return mPreviewMirror;
460 this.mPreviewMirror = mirror;
482 this.mAudioOnly = audioOnly;
502 this.mVideoOnly = videoOnly;
524 this.mAutoFocus = autoFocus;
535 return mFocusBySensor;
548 this.mFocusBySensor = focusBySensor;
581 return sendDataTimeout;
592 this.sendDataTimeout = sendDataTimeout;
601 return mPausePushImagePath;
610 mPausePushImagePath = path;
619 return mNetworkPoorPushImagePath;
628 mNetworkPoorPushImagePath = path;
637 return mInitialVideoBitrate;
646 this.mInitialVideoBitrate = initialVideoBitrate;
647 this.initBitFlag =
true;
658 return mConnectRetryCount;
669 this.mConnectRetryCount = connectRetryCount;
680 return mConnectRetryInterval;
691 this.mConnectRetryInterval = connectRetryInterval;
713 this.mPushMirror = pushMirror;
725 return mVideoEncodeMode;
737 this.mVideoEncodeMode = videoEncodeMode;
749 return mVideoEncodeType;
761 this.mVideoEncodeType = videoEncodeType;
773 return mAudioEncodeMode;
785 this.mAudioEncodeMode = audioEncodeMode;
825 mAudioChannels = audioChannels;
836 return mVideoEncodeGop.
getGop();
847 mVideoEncodeGop = videoEncodeGop;
873 this.mExposure = exposure;
899 return mUseAliPlayerForBGM;
912 enableNarrowbandHDForScreenPusher = enable;
925 return enableNarrowbandHDForScreenPusher;
949 this.minFps = minFps;
973 this.audioProfile = audioProfile;
995 this.audioBitRate = audioBitRate;
1009 return audioSceneMode;
1023 this.audioSceneMode = audioSceneMode;
1035 this.qualityMode = quality;
1057 return mediaProjectionPermissionResultData;
1067 AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1078 return enableBitrateControl;
1089 this.enableBitrateControl = enableBitrateControl;
1100 return enableAutoResolution;
1111 this.enableAutoResolution = enableAutoResolution;
1122 return externMainStream;
1135 this.externMainStream = externMainStream;
1150 this.externMainStream = externMainStream;
1151 mAlivcExternMainImageFormat = imageFormat;
1152 mAlivcExternMainSoundFormat = soundFormat;
1164 return mAlivcExternMainImageFormat;
1175 this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1187 return mAlivcExternMainSoundFormat;
1199 this.mAlivcExternMainSoundFormat = soundFormat;
1211 return mPreviewDisplayMode;
1223 this.mPreviewDisplayMode = displayMode;
1235 this.requireGLSharedContext = enable;
1247 return this.requireGLSharedContext;
1258 this.mAudioCaptureWithoutMix = on;
1269 return mAudioCaptureWithoutMix;
1291 if (waterMarkInfos.size() < 3) {
1292 waterMarkInfos.add(waterMarkInfo);
1301 waterMarkInfos.clear();
1312 if (path != null && path.equals(info.mWaterMarkPath)) {
1313 waterMarkInfos.remove(info);
1325 ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1326 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 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)
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()