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;
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;
174 return mLivePushMode;
177 private boolean checkLiveInteractiveMode() {
202 this.mResolution = resolution;
204 if (!targetBitFlag) {
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;
602 return mPausePushImagePath;
612 mPausePushImagePath = path;
622 return mNetworkPoorPushImagePath;
632 mNetworkPoorPushImagePath = path;
641 return mInitialVideoBitrate;
650 this.mInitialVideoBitrate = initialVideoBitrate;
651 this.initBitFlag =
true;
662 return mConnectRetryCount;
673 this.mConnectRetryCount = connectRetryCount;
684 return mConnectRetryInterval;
695 this.mConnectRetryInterval = connectRetryInterval;
717 this.mPushMirror = pushMirror;
729 return mVideoEncodeMode;
741 this.mVideoEncodeMode = videoEncodeMode;
753 return mVideoEncodeType;
765 this.mVideoEncodeType = videoEncodeType;
777 return mAudioEncodeMode;
789 this.mAudioEncodeMode = audioEncodeMode;
829 mAudioChannels = audioChannels;
840 return mVideoEncodeGop.
getGop();
851 mVideoEncodeGop = videoEncodeGop;
877 this.mExposure = exposure;
903 return mUseAliPlayerForBGM;
916 enableNarrowbandHDForScreenPusher = enable;
929 return enableNarrowbandHDForScreenPusher;
953 this.minFps = minFps;
977 this.audioProfile = audioProfile;
999 this.audioBitRate = audioBitRate;
1013 return audioSceneMode;
1027 this.audioSceneMode = audioSceneMode;
1039 this.qualityMode = quality;
1061 return mediaProjectionPermissionResultData;
1071 AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1082 return enableBitrateControl;
1093 this.enableBitrateControl = enableBitrateControl;
1104 return enableAutoResolution;
1115 this.enableAutoResolution = enableAutoResolution;
1126 return externMainStream;
1139 this.externMainStream = externMainStream;
1154 this.externMainStream = externMainStream;
1155 mAlivcExternMainImageFormat = imageFormat;
1156 mAlivcExternMainSoundFormat = soundFormat;
1168 return mAlivcExternMainImageFormat;
1179 this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1191 return mAlivcExternMainSoundFormat;
1203 this.mAlivcExternMainSoundFormat = soundFormat;
1215 return mPreviewDisplayMode;
1227 this.mPreviewDisplayMode = displayMode;
1239 this.requireGLSharedContext = enable;
1251 return this.requireGLSharedContext;
1262 this.mAudioCaptureWithoutMix = on;
1273 return mAudioCaptureWithoutMix;
1295 if (waterMarkInfos.size() < 3) {
1296 waterMarkInfos.add(waterMarkInfo);
1305 waterMarkInfos.clear();
1316 if (path != null && path.equals(info.mWaterMarkPath)) {
1317 waterMarkInfos.remove(info);
1329 ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1330 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)
static int getResolutionHeight(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
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()
static int getResolutionWidth(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
void setCameraType(AlivcLivePushCameraTypeEnum cameraType)
void setAudioProfile(AlivcAudioAACProfileEnum audioProfile)
void setResolution(AlivcResolutionEnum resolution)
void setPreviewDisplayMode(AlivcPreviewDisplayMode displayMode)
void setMinFps(AlivcFpsEnum minFps)
void setTargetVideoBitrate(int targetBitRate)
static int getInitBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
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()
static int getTargetBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
void setVideoEncodeType(AlivcEncodeType videoEncodeType)
void setAudioBitRate(int audioBitRate)
void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode)
static int getMinBitrate(AlivcResolutionEnum resolution, AlivcLiveMode liveMode)
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()