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;
41 public static final String CONFIG =
"AlivcLivePushConfig";
47 private int mTargetVideoBitrate = DEFAULT_VALUE_INT_TARGET_BITRATE;
48 private int mMinVideoBitrate = DEFAULT_VALUE_INT_MIN_BITRATE;
49 private int mInitialVideoBitrate = DEFAULT_VALUE_INT_INIT_BITRATE;
50 private int mBFrames = 0;
51 private static Intent mediaProjectionPermissionResultData = null;
56 private boolean mPreviewMirror = DEFAULT_VALUE_PREVIEW_MIRROR;
57 private boolean mPushMirror = DEFAULT_VALUE_PUSH_MIRROR;
58 private boolean mAudioOnly = DEFAULT_VALUE_AUDIO_ONLY;
59 private boolean mVideoOnly = DEFAULT_VALUE_VIDEO_ONLY;
60 private boolean mAutoFocus = DEFAULT_VALUE_AUTO_FOCUS;
61 private boolean mFocusBySensor =
false;
62 private boolean mFlash = DEFAULT_VALUE_FLASH;
64 private int mHeight =
AlivcResolutionEnum.GetResolutionHeight(DEFAULT_VALUE_INT_DEFINITION);
67 private int mConnectRetryCount = DEFAULT_VALUE_INT_AUDIO_RETRY_COUNT;
68 private int mConnectRetryInterval = DEFAULT_VALUE_INT_RETRY_INTERVAL;
70 private long mPtsMaxDiff = DEFAULT_MAX_DIFF_PTS;
71 private int mMaxTimeoutCount = DEFAULT_MAX_TIMEOUT_COUNT;
79 private int mVideoFormat = ImageFormat.NV21;
80 private int mAudioFormat = AudioFormat.ENCODING_PCM_16BIT;
86 private int mExposure = 0;
88 private boolean mUseAliPlayerForBGM =
false;
90 private boolean enableNarrowbandHDForScreenPusher =
true;
92 private boolean enableSDKCrashMechanism =
true;
97 private boolean enableBitrateControl =
true;
98 private boolean enableAutoResolution =
false;
100 private boolean initBitFlag =
false;
101 private boolean minBitFlag =
false;
102 private boolean targetBitFlag =
false;
104 private boolean externMainStream =
false;
106 private int sendDataTimeout = 3000;
110 private int audioBitRate = 64000;
113 private String mPausePushImagePath =
"";
114 private String mNetworkPoorPushImagePath =
"";
116 private boolean requireGLSharedContext =
false;
117 private boolean mAudioCaptureWithoutMix =
false;
119 private String mExtraInfo;
124 mediaProjectionPermissionResultData = null;
125 if (Build.MANUFACTURER.equals(
"Letv") || Build.MODEL.equals(
"Le X620")) {
126 mAudioCaptureWithoutMix =
true;
130 private ArrayList<WaterMarkInfo> waterMarkInfos =
new ArrayList<>();
132 public int getVideoFormat() {
136 public void setVideoFormat(
int videoFormat) {
137 this.mVideoFormat = videoFormat;
140 public int getAudioFormat() {
144 public void setAudioFormat(
int audioFormat) {
145 this.mAudioFormat = audioFormat;
161 this.mLivePushMode = pushMode;
171 return mLivePushMode;
174 private boolean checkLiveInteractiveMode() {
199 this.mResolution = resolution;
201 if (!targetBitFlag) {
202 mTargetVideoBitrate = checkLiveInteractiveMode() ?
207 mInitialVideoBitrate = checkLiveInteractiveMode() ?
212 mMinVideoBitrate = checkLiveInteractiveMode() ?
236 mExtraInfo = extraInfo;
261 this.monitorLevel = monitorLevel;
291 return mTargetVideoBitrate;
300 this.mTargetVideoBitrate = targetBitRate;
301 this.targetBitFlag =
true;
310 return mMinVideoBitrate;
319 this.mMinVideoBitrate = minBitrate;
320 this.minBitFlag =
true;
342 this.mBFrames = bFrame;
354 return mAudioSampleRate;
366 this.mAudioSampleRate = audioSample;
389 this.mPreviewOrientation = previewOrientation;
416 this.mPreviewRotation = rotation;
439 this.mCameraType = cameraType;
450 return mPreviewMirror;
461 this.mPreviewMirror = mirror;
483 this.mAudioOnly = audioOnly;
505 this.mVideoOnly = videoOnly;
527 this.mAutoFocus = autoFocus;
538 return mFocusBySensor;
551 this.mFocusBySensor = focusBySensor;
584 return sendDataTimeout;
595 this.sendDataTimeout = sendDataTimeout;
604 return mPausePushImagePath;
613 mPausePushImagePath = path;
622 return mNetworkPoorPushImagePath;
631 mNetworkPoorPushImagePath = path;
640 return mInitialVideoBitrate;
649 this.mInitialVideoBitrate = initialVideoBitrate;
650 this.initBitFlag =
true;
661 return mConnectRetryCount;
672 this.mConnectRetryCount = connectRetryCount;
683 return mConnectRetryInterval;
694 this.mConnectRetryInterval = connectRetryInterval;
716 this.mPushMirror = pushMirror;
728 return mVideoEncodeMode;
740 this.mVideoEncodeMode = videoEncodeMode;
752 return mVideoEncodeType;
764 this.mVideoEncodeType = videoEncodeType;
776 return mAudioEncodeMode;
788 this.mAudioEncodeMode = audioEncodeMode;
828 mAudioChannels = audioChannels;
839 return mVideoEncodeGop.
getGop();
850 mVideoEncodeGop = videoEncodeGop;
876 this.mExposure = exposure;
906 return mUseAliPlayerForBGM;
919 enableNarrowbandHDForScreenPusher = enable;
932 return enableNarrowbandHDForScreenPusher;
946 enableSDKCrashMechanism = enable;
960 return enableSDKCrashMechanism;
984 this.minFps = minFps;
1008 this.audioProfile = audioProfile;
1019 return audioBitRate;
1030 this.audioBitRate = audioBitRate;
1044 return audioSceneMode;
1058 this.audioSceneMode = audioSceneMode;
1070 this.qualityMode = quality;
1092 return mediaProjectionPermissionResultData;
1102 AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1113 return enableBitrateControl;
1124 this.enableBitrateControl = enableBitrateControl;
1135 return enableAutoResolution;
1146 this.enableAutoResolution = enableAutoResolution;
1157 return externMainStream;
1171 this.externMainStream = externMainStream;
1187 this.externMainStream = externMainStream;
1188 mAlivcExternMainImageFormat = imageFormat;
1189 mAlivcExternMainSoundFormat = soundFormat;
1201 return mAlivcExternMainImageFormat;
1212 this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1224 return mAlivcExternMainSoundFormat;
1236 this.mAlivcExternMainSoundFormat = soundFormat;
1248 return mPreviewDisplayMode;
1260 this.mPreviewDisplayMode = displayMode;
1272 this.requireGLSharedContext = enable;
1284 return this.requireGLSharedContext;
1295 this.mAudioCaptureWithoutMix = on;
1306 return mAudioCaptureWithoutMix;
1328 if (waterMarkInfos.size() < 3) {
1329 waterMarkInfos.add(waterMarkInfo);
1338 waterMarkInfos.clear();
1349 if (path != null && path.equals(info.mWaterMarkPath)) {
1350 waterMarkInfos.remove(info);
1362 ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1363 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)
Enumeration of streaming audio profile.
AlivcImageFormat getAlivcExternMainImageFormat()
Live push video encode GOP.
void setEnableNarrowbandHDForScreenPusher(boolean enable)
Enumeration of streaming audio scene mode.
void setAudioCaptureWithoutMix(boolean on)
void setInitialVideoBitrate(int initialVideoBitrate)
void setPausePushImage(String path)
int getTargetVideoBitrate()
void setAudioChannels(AlivcAudioChannelEnum audioChannels)
Enumeration of streaming video fps.
void setQualityMode(AlivcQualityModeEnum quality)
void setExposure(int exposure)
AlivcAudioSceneModeEnum getAudioSceneMode()
void setCameraType(AlivcLivePushCameraTypeEnum cameraType)
void setAudioProfile(AlivcAudioAACProfileEnum audioProfile)
void setResolution(AlivcResolutionEnum resolution)
Enumeration of streaming encode mode.
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)
Enumeration of streaming encode type.
void setExternMainStream(boolean externMainStream)
boolean isEnableSDKCrashMechanism()
boolean isFocusBySensor()
void setMinVideoBitrate(int minBitrate)
AlivcAudioAACProfileEnum getAudioProfile()
boolean getRequireRenderContextNotify()
void setVideoEncodeMode(AlivcEncodeModeEnum videoEncodeMode)
int getConnectRetryInterval()
Live push video quality mode.
Live push preview rotation.
void setPushMirror(boolean pushMirror)
Intent getMediaProjectionPermissionResultData()
void setAudioSceneMode(AlivcAudioSceneModeEnum audioSceneMode)
Enumeration of streaming audio sample rate.
void setSendDataTimeout(int sendDataTimeout)
void setRequireRenderContextNotify(boolean enable)
void setAlivcExternMainSoundFormat(AlivcSoundFormat soundFormat)
int getInitialVideoBitrate()
Live push video resolution.
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)
Enumeration of streaming video camera type.
Live push preview orientation.
boolean isEnableAutoResolution()
boolean isEnableBitrateControl()
Live push preview display mode.
void setVideoEncodeType(AlivcEncodeType videoEncodeType)
void setAudioBitRate(int audioBitRate)
void setAudioEncodeMode(AlivcEncodeModeEnum audioEncodeMode)
Enumeration of streaming audio channel.
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()