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;
95 private boolean enableBitrateControl =
true;
96 private boolean enableAutoResolution =
false;
98 private boolean initBitFlag =
false;
99 private boolean minBitFlag =
false;
100 private boolean targetBitFlag =
false;
102 private boolean externMainStream =
false;
104 private int sendDataTimeout = 3000;
108 private int audioBitRate = 64000;
111 private String mPausePushImagePath =
"";
112 private String mNetworkPoorPushImagePath =
"";
114 private boolean requireGLSharedContext =
false;
115 private boolean mAudioCaptureWithoutMix =
false;
117 private String mExtraInfo;
122 mediaProjectionPermissionResultData = null;
123 if (Build.MANUFACTURER.equals(
"Letv") || Build.MODEL.equals(
"Le X620")) {
124 mAudioCaptureWithoutMix =
true;
128 private ArrayList<WaterMarkInfo> waterMarkInfos =
new ArrayList<>();
130 public int getVideoFormat() {
134 public void setVideoFormat(
int videoFormat) {
135 this.mVideoFormat = videoFormat;
138 public int getAudioFormat() {
142 public void setAudioFormat(
int audioFormat) {
143 this.mAudioFormat = audioFormat;
159 this.mLivePushMode = pushMode;
169 return mLivePushMode;
172 private boolean checkLiveInteractiveMode() {
197 this.mResolution = resolution;
199 if (!targetBitFlag) {
200 mTargetVideoBitrate = checkLiveInteractiveMode() ?
205 mInitialVideoBitrate = checkLiveInteractiveMode() ?
210 mMinVideoBitrate = checkLiveInteractiveMode() ?
234 mExtraInfo = extraInfo;
259 this.monitorLevel = monitorLevel;
289 return mTargetVideoBitrate;
298 this.mTargetVideoBitrate = targetBitRate;
299 this.targetBitFlag =
true;
308 return mMinVideoBitrate;
317 this.mMinVideoBitrate = minBitrate;
318 this.minBitFlag =
true;
340 this.mBFrames = bFrame;
352 return mAudioSampleRate;
364 this.mAudioSampleRate = audioSample;
387 this.mPreviewOrientation = previewOrientation;
414 this.mPreviewRotation = rotation;
437 this.mCameraType = cameraType;
448 return mPreviewMirror;
459 this.mPreviewMirror = mirror;
481 this.mAudioOnly = audioOnly;
503 this.mVideoOnly = videoOnly;
525 this.mAutoFocus = autoFocus;
536 return mFocusBySensor;
549 this.mFocusBySensor = focusBySensor;
582 return sendDataTimeout;
593 this.sendDataTimeout = sendDataTimeout;
602 return mPausePushImagePath;
611 mPausePushImagePath = path;
620 return mNetworkPoorPushImagePath;
629 mNetworkPoorPushImagePath = path;
638 return mInitialVideoBitrate;
647 this.mInitialVideoBitrate = initialVideoBitrate;
648 this.initBitFlag =
true;
659 return mConnectRetryCount;
670 this.mConnectRetryCount = connectRetryCount;
681 return mConnectRetryInterval;
692 this.mConnectRetryInterval = connectRetryInterval;
714 this.mPushMirror = pushMirror;
726 return mVideoEncodeMode;
738 this.mVideoEncodeMode = videoEncodeMode;
750 return mVideoEncodeType;
762 this.mVideoEncodeType = videoEncodeType;
774 return mAudioEncodeMode;
786 this.mAudioEncodeMode = audioEncodeMode;
826 mAudioChannels = audioChannels;
837 return mVideoEncodeGop.
getGop();
848 mVideoEncodeGop = videoEncodeGop;
874 this.mExposure = exposure;
904 return mUseAliPlayerForBGM;
917 enableNarrowbandHDForScreenPusher = enable;
930 return enableNarrowbandHDForScreenPusher;
954 this.minFps = minFps;
978 this.audioProfile = audioProfile;
1000 this.audioBitRate = audioBitRate;
1014 return audioSceneMode;
1028 this.audioSceneMode = audioSceneMode;
1040 this.qualityMode = quality;
1062 return mediaProjectionPermissionResultData;
1072 AlivcLivePushConfig.mediaProjectionPermissionResultData = mediaProjectionPermissionResultData;
1083 return enableBitrateControl;
1094 this.enableBitrateControl = enableBitrateControl;
1105 return enableAutoResolution;
1116 this.enableAutoResolution = enableAutoResolution;
1127 return externMainStream;
1141 this.externMainStream = externMainStream;
1157 this.externMainStream = externMainStream;
1158 mAlivcExternMainImageFormat = imageFormat;
1159 mAlivcExternMainSoundFormat = soundFormat;
1171 return mAlivcExternMainImageFormat;
1182 this.mAlivcExternMainImageFormat = alivcExternMainImageFormat;
1194 return mAlivcExternMainSoundFormat;
1206 this.mAlivcExternMainSoundFormat = soundFormat;
1218 return mPreviewDisplayMode;
1230 this.mPreviewDisplayMode = displayMode;
1242 this.requireGLSharedContext = enable;
1254 return this.requireGLSharedContext;
1265 this.mAudioCaptureWithoutMix = on;
1276 return mAudioCaptureWithoutMix;
1298 if (waterMarkInfos.size() < 3) {
1299 waterMarkInfos.add(waterMarkInfo);
1308 waterMarkInfos.clear();
1319 if (path != null && path.equals(info.mWaterMarkPath)) {
1320 waterMarkInfos.remove(info);
1332 ArrayList<WaterMarkInfo> getWaterMarkInfos() {
1333 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 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)
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()