1package com.alivc.live.pusher;
3import android.content.Context;
4import android.graphics.Bitmap;
5import android.view.SurfaceView;
6import android.widget.FrameLayout;
8import com.alivc.component.custom.AlivcLivePushCustomAudioFilter;
9import com.alivc.component.custom.AlivcLivePushCustomDetect;
10import com.alivc.component.custom.AlivcLivePushCustomFilter;
11import com.alivc.live.annotations.AlivcLiveAudioEffectBeautifyMode;
12import com.alivc.live.annotations.AlivcLiveAudioEffectEqualizationBandFrequency;
13import com.alivc.live.annotations.AlivcLiveAudioEffectReverbParamType;
14import com.alivc.live.annotations.AlivcLiveAudioProfileQualityMode;
15import com.alivc.live.annotations.AlivcLiveAudioSource;
16import com.alivc.live.annotations.AlivcLiveChannelProfile;
17import com.alivc.live.annotations.AlivcLiveMode;
18import com.alivc.live.annotations.AlivcLiveMuteLocalAudioMode;
19import com.alivc.live.annotations.AlivcLiveNetworkQuality;
20import com.alivc.live.annotations.AlivcLiveRecordMediaEvent;
21import com.alivc.live.annotations.AlivcLiveVideoCodecManufacturer;
22import com.alivc.live.annotations.AlivcLiveVideoMirrorMode;
23import com.alivc.live.biz.api.ILivePusher;
24import com.alivc.live.biz.utils.AlivcLiveURLTools;
25import com.alivc.live.biz.utils.ReflectUtil;
26import com.alivc.live.player.annotations.AlivcLivePlayVideoStreamType;
43 private ILivePusher mImpl =
null;
45 private static final String BASIC_PUSHER_IMPL_CLASS =
"com.alivc.live.pusher.basic.AlivcBasicLivePusherImpl";
46 private static final String INTERACTIVE_PUSHER_IMPL_CLASS =
"com.alivc.live.pusher.rtc.AlivcRTCLivePusherImpl";
62 throw new IllegalArgumentException(
"Invalid parameter, config is null.");
65 reflectInitPusher(config.getLivePushMode());
71 mImpl.init(context, config);
75 Object playerInstance =
null;
78 playerInstance = ReflectUtil.reflectInit(INTERACTIVE_PUSHER_IMPL_CLASS,
null,
null);
80 playerInstance = ReflectUtil.reflectInit(BASIC_PUSHER_IMPL_CLASS,
null,
null);
83 if (playerInstance ==
null) {
84 throw new RuntimeException(
"init live pusher error! now not support mode: " + mode);
87 mImpl = (ILivePusher) playerInstance;
97 public void destroy() throws IllegalStateException {
115 mImpl.setLivePusherReference(livePusher);
131 public void startPreview(SurfaceView surfaceView)
throws IllegalArgumentException, IllegalStateException {
135 mImpl.startPreview(surfaceView);
151 public void startPreviewAsync(SurfaceView surfaceView)
throws IllegalArgumentException, IllegalStateException {
155 mImpl.startPreviewAsync(surfaceView);
175 public void startPreview(Context context, FrameLayout frameLayout,
boolean isFullScreen)
throws IllegalArgumentException, IllegalStateException {
179 mImpl.startPreview(context, frameLayout, isFullScreen);
192 public void updatePreview(Context context, FrameLayout frameLayout,
boolean isFullScreen) {
196 mImpl.updatePreview(context, frameLayout, isFullScreen);
226 public void startPush(String url)
throws IllegalArgumentException, IllegalStateException {
230 mImpl.startPush(AlivcLiveURLTools.trimUrl(url));
244 public void startPushAsync(String url)
throws IllegalArgumentException, IllegalStateException {
248 mImpl.startPushAsync(AlivcLiveURLTools.trimUrl(url));
280 mImpl.restartPushAsync();
295 mImpl.reconnectPushAsync(AlivcLiveURLTools.trimUrl(url));
304 public void stopPush() throws IllegalStateException {
321 public void pause() throws IllegalStateException {
336 public void resume() throws IllegalStateException {
368 mImpl.switchCamera();
378 public void setAutoFocus(
boolean autoFocus)
throws IllegalStateException {
382 mImpl.setAutoFocus(autoFocus);
398 mImpl.focusCameraAtAdjustedPoint(x, y, autoFocus);
408 public void setZoom(
int zoom)
throws IllegalArgumentException, IllegalStateException {
426 return mImpl.getMaxZoom();
440 return mImpl.getCurrentZoom();
453 public void setMute(
boolean mute)
throws IllegalStateException {
475 mImpl.setMute(mute, muteLocalAudioMode);
485 public void setFlash(
boolean flash)
throws IllegalStateException {
489 mImpl.setFlash(flash);
503 mImpl.setPushMirror(mirror);
517 mImpl.setPreviewMirror(mirror);
533 return mImpl.setVideoMirrorMode(mirrorMode);
545 mImpl.setVideoConfig(videoConfig);
560 return mImpl.getVideoConfig();
575 mImpl.setTargetVideoBitrate(targetVideoBitrate);
586 public void setMinVideoBitrate(
int minVideoBitrate)
throws IllegalArgumentException, IllegalStateException {
590 mImpl.setMinVideoBitrate(minVideoBitrate);
609 mImpl.refreshPushURLToken(url);
622 return mImpl.isCameraSupportAutoFocus();
635 return mImpl.isCameraSupportFlash();
645 public boolean isPushing() throws IllegalStateException {
649 return mImpl.isPushing();
663 return mImpl.isNetworkPushing();
676 mImpl.setCustomDetect(customVideoDetect);
689 mImpl.setCustomFilter(customVideoFilter);
702 mImpl.setCustomAudioFilter(customAudioFilter);
716 return mImpl.getCurrentStatus();
732 mImpl.setLivePushErrorListener(errorListener);
746 mImpl.setLivePushInfoListener(infoListener);
760 mImpl.setLivePushNetworkListener(networkListener);
774 mImpl.setLivePushBGMListener(pushBGMListener);
788 mImpl.setLivePushAudioFrameListener(pushAudioFrameListener);
801 mImpl.setLivePushRenderContextListener(renderCtxListener);
815 return mImpl.getLivePushStatsInfo();
828 return mImpl.getPushUrl();
843 return mImpl.setParameter(parameter);
858 return mImpl.getParameter(parameter);
871 mImpl.setPreviewOrientation(orientation);
888 return mImpl.startBGMAsync(path);
905 return mImpl.startBGMAsync(path, bgmConfig);
918 mImpl.stopBGMAsync();
933 return mImpl.getBGMDuration();
948 return mImpl.getBGMCurrentPosition();
957 public void pauseBGM() throws IllegalStateException {
984 public void setBGMLoop(
boolean isLoop)
throws IllegalStateException {
988 mImpl.setBGMLoop(isLoop);
1002 mImpl.setBGMEarsBack(isOpen);
1013 public void setBGMVolume(
int volume)
throws IllegalStateException, IllegalArgumentException {
1014 if (mImpl ==
null) {
1017 mImpl.setBGMVolume(volume);
1028 public void setCaptureVolume(
int volume)
throws IllegalStateException, IllegalArgumentException {
1029 if (mImpl ==
null) {
1032 mImpl.setCaptureVolume(volume);
1045 if (mImpl ==
null) {
1048 mImpl.setAudioDenoise(enable);
1068 if (mImpl ==
null) {
1071 return mImpl.startIntelligentDenoise();
1082 if (mImpl ==
null) {
1085 return mImpl.stopIntelligentDenoise();
1096 if (mImpl ==
null) {
1099 mImpl.setQualityMode(mode);
1110 if (mImpl ==
null) {
1113 mImpl.setPreviewMode(mode);
1123 if (mImpl ==
null) {
1126 mImpl.pauseScreenCapture();
1136 if (mImpl ==
null) {
1139 mImpl.resumeScreenCapture();
1150 if (mImpl ==
null) {
1153 return mImpl.getVideoCodecType();
1163 if (mImpl ==
null) {
1166 return mImpl.getLastError();
1182 if (mImpl ==
null) {
1185 mImpl.changeResolution(resolution);
1200 if (mImpl ==
null) {
1203 mImpl.addWaterMark(path, x, y, width);
1219 if (mImpl ==
null) {
1222 mImpl.addWaterMark(bitmap, x, y, width);
1232 if (mImpl ==
null) {
1235 mImpl.setWatermarkVisible(visible);
1246 public int startCamera(SurfaceView surfaceView)
throws IllegalStateException {
1247 if (mImpl ==
null) {
1250 return mImpl.startCamera(surfaceView);
1258 if (mImpl ==
null) {
1271 if (mImpl ==
null) {
1274 mImpl.setScreenOrientation(orientation);
1288 if (mImpl ==
null) {
1291 return mImpl.startCameraMix(x, y, w, h);
1299 if (mImpl ==
null) {
1302 mImpl.stopCameraMix();
1317 if (mImpl ==
null) {
1320 return mImpl.startLocalRecord(localRecordConfig);
1333 if (mImpl ==
null) {
1336 mImpl.stopLocalRecord();
1348 if (mImpl ==
null) {
1351 return mImpl.startScreenShare();
1362 if (mImpl ==
null) {
1365 return mImpl.stopScreenShare();
1380 if (mImpl ==
null) {
1383 return mImpl.startLocalDualAudioStream();
1395 if (mImpl ==
null) {
1398 return mImpl.stopLocalDualAudioStream();
1410 if (mImpl ==
null) {
1413 mImpl.snapshot(count, interval, listener);
1427 if (mImpl ==
null) {
1430 mImpl.setExternalVideoSource(enable, useTexture, videoStreamType, previewDisplayMode);
1444 if (mImpl ==
null) {
1447 return mImpl.pushExternalVideoFrame(rawDataSample, videoStreamType);
1459 if (mImpl ==
null) {
1462 return mImpl.setMixedWithMic(mixed);
1474 if (mImpl ==
null) {
1477 return mImpl.addExternalAudioStream(externalAudioStreamConfig);
1491 if (mImpl ==
null) {
1494 return mImpl.pushExternalAudioStream(streamId, audioFrame);
1507 if (mImpl ==
null) {
1510 return mImpl.setExternalAudioStreamPlayoutVolume(streamId, playoutVolume);
1523 if (mImpl ==
null) {
1526 return mImpl.setExternalAudioStreamPublishVolume(streamId, publishVolume);
1538 if (mImpl ==
null) {
1541 return mImpl.removeExternalAudioStream(streamId);
1559 public void inputStreamVideoPtr(
long dataPtr,
int width,
int height,
int stride,
int size,
long pts,
int rotation) {
1560 if (mImpl ==
null) {
1563 mImpl.inputStreamVideoPtr(dataPtr, width, height, stride, size, pts, rotation);
1579 public void inputStreamVideoData(
byte[] data,
int width,
int height,
int stride,
int size,
long pts,
int rotation) {
1580 if (mImpl ==
null) {
1583 mImpl.inputStreamVideoData(data, width, height, stride, size, pts, rotation);
1600 if (mImpl ==
null) {
1603 mImpl.inputStreamAudioPtr(dataPtr, size, sampleRate, channels, pts);
1618 if (mImpl ==
null) {
1621 mImpl.inputStreamAudioData(data, size, sampleRate, channels, pts);
1637 if (mImpl ==
null) {
1640 return mImpl.addDynamicsAddons(path, x, y, w, h);
1650 if (mImpl ==
null) {
1653 mImpl.removeDynamicsAddons(
id);
1663 if (mImpl ==
null) {
1666 mImpl.setExposure(exposure);
1676 if (mImpl ==
null) {
1679 return mImpl.getCurrentExposure();
1689 if (mImpl ==
null) {
1692 return mImpl.getSupportedMinExposure();
1702 if (mImpl ==
null) {
1705 return mImpl.getSupportedMaxExposure();
1720 if (mImpl ==
null) {
1723 return mImpl.enableSEIVideoStream(enable);
1742 public void sendMessage(String info,
int repeat,
int delay,
boolean isKeyFrame) {
1743 if (mImpl ==
null) {
1746 mImpl.sendMessage(info, repeat, delay, isKeyFrame);
1767 public void sendMessage(String info,
int repeat,
int delay,
boolean isKeyFrame,
int payloadType) {
1768 if (mImpl ==
null) {
1771 mImpl.sendMessage(info, repeat, delay, isKeyFrame, payloadType);
1785 if (mImpl ==
null) {
1788 return mImpl.sendDataChannelMessage(message);
1811 if (mImpl ==
null) {
1814 return mImpl.setLiveMixTranscodingConfig(config);
1831 if (mImpl ==
null) {
1834 return mImpl.muteLocalCamera(mute);
1849 if (mImpl ==
null) {
1852 return mImpl.enableLocalCamera(enable);
1867 if (mImpl ==
null) {
1870 return mImpl.startAudioCapture(keepAlive);
1885 if (mImpl ==
null) {
1888 return mImpl.stopAudioCapture();
1900 if (mImpl ==
null) {
1903 return mImpl.enableSpeakerphone(enable);
1914 if (mImpl ==
null) {
1917 return mImpl.isSpeakerphoneOn();
1930 if (mImpl ==
null) {
1933 return mImpl.setChannelProfile(channelProfile);
1945 if (mImpl ==
null) {
1948 return mImpl.setAudioProfile(audioProfileQualityMode);
1961 if (mImpl ==
null) {
1964 return mImpl.setAudioEffectVoiceChangeMode(mode);
1977 if (mImpl ==
null) {
1980 return mImpl.setAudioEffectReverbMode(mode);
1993 if (mImpl ==
null) {
1996 return mImpl.setAudioEffectPitchValue(value);
2009 if (mImpl ==
null) {
2012 return mImpl.setAudioEffectBeautifyMode(audioEffectBeautifyMode);
2026 if (mImpl ==
null) {
2029 return mImpl.setAudioEffectReverbParamType(audioEffectReverbParamType, value);
2044 if (mImpl ==
null) {
2047 return mImpl.setAudioEffectEqualizationParam(audioEffectEqualizationBandFrequency, gain);
2064 if (mImpl ==
null) {
2067 return mImpl.enableAudioVolumeIndication(interval, smooth, reportVad);
2084 if (mImpl ==
null) {
2087 return mImpl.enableAudioFrameObserver(enable, audioSource, config);
2101 if (mImpl ==
null) {
2104 return mImpl.preloadAudioEffect(soundId, filePath);
2116 if (mImpl ==
null) {
2119 return mImpl.unloadAudioEffect(soundId);
2134 if (mImpl ==
null) {
2137 return mImpl.playAudioEffect(soundId, filePath, config);
2149 if (mImpl ==
null) {
2152 return mImpl.stopAudioEffect(soundId);
2163 if (mImpl ==
null) {
2166 return mImpl.stopAllAudioEffects();
2179 if (mImpl ==
null) {
2182 return mImpl.setAudioEffectPublishVolume(soundId, volume);
2194 if (mImpl ==
null) {
2197 return mImpl.getAudioEffectPublishVolume(soundId);
2210 if (mImpl ==
null) {
2213 return mImpl.setAudioEffectPlayoutVolume(soundId, volume);
2225 if (mImpl ==
null) {
2228 return mImpl.getAudioEffectPlayoutVolume(soundId);
2240 if (mImpl ==
null) {
2243 return mImpl.setAllAudioEffectsPublishVolume(volume);
2255 if (mImpl ==
null) {
2258 return mImpl.setAllAudioEffectsPlayoutVolume(volume);
2270 if (mImpl ==
null) {
2273 return mImpl.pauseAudioEffect(soundId);
2284 if (mImpl ==
null) {
2287 return mImpl.pauseAllAudioEffects();
2299 if (mImpl ==
null) {
2302 return mImpl.resumeAudioEffect(soundId);
2313 if (mImpl ==
null) {
2316 return mImpl.resumeAllAudioEffects();
2331 if (mImpl ==
null) {
2334 return mImpl.startLastMileDetect(networkQualityProbeConfig);
2345 if (mImpl ==
null) {
2348 return mImpl.stopLastMileDetect();
2360 if (mImpl ==
null) {
2363 return mImpl.getCurrentEncoderManufacturer(isCameraStream);
2374 if (mImpl ==
null) {
2377 return mImpl.getLiveTraceId();
Audio sound playback configuration.
Audio data callback settings.
Set BGM background music configuration.
Local recording configuration.
Parameter configuration for network detection.
Audio frame data listener.
「Main API」Live push config
Live push error listener.
External audio stream configuration.
Used to load sdk common instance,.
static void loadInstance(Context context)
Live push network listener.
Live push statistics info.
「Main API」 Live pusher abstract class
int setLiveMixTranscodingConfig(AlivcLiveTranscodingConfig config)
int enableSpeakerphone(boolean enable)
int stopLocalDualAudioStream()
void startPreview(SurfaceView surfaceView)
void resumeScreenCapture()
int startBGMAsync(String path, AlivcLiveBGMConfig bgmConfig)
int setVideoMirrorMode(AlivcLiveVideoMirrorMode mirrorMode)
int setAudioEffectVoiceChangeMode(AlivcLivePushAudioEffectVoiceChangeMode mode)
void addWaterMark(Bitmap bitmap, float x, float y, float width)
int enableAudioVolumeIndication(int interval, int smooth, int reportVad)
int resumeAudioEffect(int soundId)
int stopAudioEffect(int soundId)
void setQualityMode(AlivcQualityModeEnum mode)
int setExternalAudioStreamPlayoutVolume(int streamId, int playoutVolume)
void setWatermarkVisible(boolean visible)
int setAudioEffectReverbParamType(AlivcLiveAudioEffectReverbParamType audioEffectReverbParamType, float value)
int addExternalAudioStream(AlivcLivePushExternalAudioStreamConfig externalAudioStreamConfig)
int startCamera(SurfaceView surfaceView)
void setLivePushInfoListener(AlivcLivePushInfoListener infoListener)
int setAudioEffectPitchValue(double value)
int setChannelProfile(AlivcLiveChannelProfile channelProfile)
int addDynamicsAddons(String path, float x, float y, float w, float h)
void setCustomFilter(AlivcLivePushCustomFilter customVideoFilter)
void changeResolution(AlivcResolutionEnum resolution)
int pushExternalVideoFrame(AlivcLivePusherRawDataSample rawDataSample, AlivcLivePlayVideoStreamType videoStreamType)
int pauseAudioEffect(int soundId)
int startLastMileDetect(AlivcLiveNetworkQualityProbeConfig networkQualityProbeConfig)
int startAudioCapture(boolean keepAlive)
void snapshot(int count, int interval, AlivcSnapshotListener listener)
void setPreviewOrientation(AlivcPreviewOrientationEnum orientation)
int startIntelligentDenoise()
void setMinVideoBitrate(int minVideoBitrate)
void setLivePushRenderContextListener(AlivcLivePusherRenderContextListener renderCtxListener)
void setPreviewMode(AlivcPreviewDisplayMode mode)
void setAudioDenoise(boolean enable)
AlivcLivePushVideoConfig getVideoConfig()
void setMute(boolean mute)
void inputStreamVideoData(byte[] data, int width, int height, int stride, int size, long pts, int rotation)
void setTargetVideoBitrate(int targetVideoBitrate)
int enableAudioFrameObserver(boolean enable, AlivcLiveAudioSource audioSource, AlivcLiveAudioFrameObserverConfig config)
void pauseScreenCapture()
int stopIntelligentDenoise()
int getBGMCurrentPosition()
int getSupportedMinExposure()
void inputStreamAudioData(byte[] data, int size, int sampleRate, int channels, long pts)
int setExternalAudioStreamPublishVolume(int streamId, int publishVolume)
void addWaterMark(String path, float x, float y, float width)
int enableLocalCamera(boolean enable)
int setAudioEffectBeautifyMode(AlivcLiveAudioEffectBeautifyMode audioEffectBeautifyMode)
int startCameraMix(float x, float y, float w, float h)
void removeDynamicsAddons(int id)
int setMixedWithMic(boolean mixed)
int startBGMAsync(String path)
void setCaptureVolume(int volume)
void inputStreamVideoPtr(long dataPtr, int width, int height, int stride, int size, long pts, int rotation)
int enableSEIVideoStream(boolean enable)
int setAudioEffectPlayoutVolume(int soundId, int volume)
boolean isCameraSupportFlash()
AlivcLivePushStats getCurrentStatus()
int resumeAllAudioEffects()
void setAutoFocus(boolean autoFocus)
boolean startLocalRecord(AlivcLiveLocalRecordConfig localRecordConfig)
void startPush(String url)
void setMute(boolean mute, AlivcLiveMuteLocalAudioMode muteLocalAudioMode)
void updatePreview(Context context, FrameLayout frameLayout, boolean isFullScreen)
void sendMessage(String info, int repeat, int delay, boolean isKeyFrame, int payloadType)
int setAllAudioEffectsPublishVolume(int volume)
int setAudioEffectReverbMode(AlivcLivePushAudioEffectReverbMode mode)
int setAudioEffectEqualizationParam(AlivcLiveAudioEffectEqualizationBandFrequency audioEffectEqualizationBandFrequency, float gain)
int preloadAudioEffect(int soundId, String filePath)
int removeExternalAudioStream(int streamId)
void startPreviewAsync(SurfaceView surfaceView)
void init(Context context, AlivcLivePushConfig config)
void setLivePushAudioFrameListener(AlivcLivePushAudioFrameListener pushAudioFrameListener)
AlivcLivePushError getLastError()
void setBGMVolume(int volume)
void setBGMLoop(boolean isLoop)
int pauseAllAudioEffects()
void setScreenOrientation(int orientation)
void startPreview(Context context, FrameLayout frameLayout, boolean isFullScreen)
void focusCameraAtAdjustedPoint(float x, float y, boolean autoFocus)
AlivcLiveVideoCodecManufacturer getCurrentEncoderManufacturer(boolean isCameraStream)
boolean isSpeakerphoneOn()
void setLivePushBGMListener(AlivcLivePushBGMListener pushBGMListener)
int setParameter(String parameter)
void setFlash(boolean flash)
void sendMessage(String info, int repeat, int delay, boolean isKeyFrame)
void inputStreamAudioPtr(long dataPtr, int size, int sampleRate, int channels, long pts)
void setBGMEarsBack(boolean isOpen)
void refreshPushURLToken(String url)
void setLivePusherReference(AlivcLivePusher livePusher)
int unloadAudioEffect(int soundId)
int pushExternalAudioStream(int streamId, AlivcLivePushAudioFrame audioFrame)
int startLocalDualAudioStream()
int getAudioEffectPlayoutVolume(int soundId)
void setLivePushNetworkListener(AlivcLivePushNetworkListener networkListener)
void setVideoConfig(AlivcLivePushVideoConfig videoConfig)
void setPreviewMirror(boolean mirror)
void setExternalVideoSource(boolean enable, boolean useTexture, AlivcLivePlayVideoStreamType videoStreamType, AlivcPreviewDisplayMode previewDisplayMode)
int sendDataChannelMessage(String message)
int getAudioEffectPublishVolume(int soundId)
int playAudioEffect(int soundId, String filePath, AlivcLiveAudioEffectConfig config)
int muteLocalCamera(boolean mute)
void reconnectPushAsync(String url)
String getParameter(String parameter)
int getSupportedMaxExposure()
int stopAllAudioEffects()
AlivcEncodeType getVideoCodecType()
boolean isNetworkPushing()
void setCustomDetect(AlivcLivePushCustomDetect customVideoDetect)
boolean isCameraSupportAutoFocus()
void setExposure(int exposure)
void setPushMirror(boolean mirror)
void startPushAsync(String url)
int setAllAudioEffectsPlayoutVolume(int volume)
int setAudioProfile(AlivcLiveAudioProfileQualityMode audioProfileQualityMode)
int setAudioEffectPublishVolume(int soundId, int volume)
void setLivePushErrorListener(AlivcLivePushErrorListener errorListener)
AlivcLivePushStatsInfo getLivePushStatsInfo()
void setCustomAudioFilter(AlivcLivePushCustomAudioFilter customAudioFilter)
Live push mix transcoding config.
Live push snapshot async callback.
audio effect beautify mode
Sound effect reverberation parameters.
audio profile quality mode
video pipeline mirror mode
Live play video stream type.
Enumeration of streaming encode type.
Enumeration of streaming audio effect reverb mode.
Enumeration of streaming audio effect voice change mode.
Live push preview display mode.
Live push preview orientation.
Live push video quality mode.
Live push video resolution.
Customizing the audio filter interface.
User defined video custom detect callback.
Customizing the filter interface (Video Pre-Processing Callback)