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;
49 private ILivePusher mImpl =
null;
51 private static final String BASIC_PUSHER_IMPL_CLASS =
"com.alivc.live.pusher.basic.AlivcBasicLivePusherImpl";
52 private static final String INTERACTIVE_PUSHER_IMPL_CLASS =
"com.alivc.live.pusher.rtc.AlivcRTCLivePusherImpl";
68 throw new IllegalArgumentException(
"Invalid parameter, config is null.");
71 reflectInitPusher(config.getLivePushMode());
77 mImpl.init(context, config);
81 Object playerInstance =
null;
84 playerInstance = ReflectUtil.reflectInit(INTERACTIVE_PUSHER_IMPL_CLASS,
null,
null);
86 playerInstance = ReflectUtil.reflectInit(BASIC_PUSHER_IMPL_CLASS,
null,
null);
89 if (playerInstance ==
null) {
90 throw new RuntimeException(
"init live pusher error! now not support mode: " + mode);
93 mImpl = (ILivePusher) playerInstance;
103 public void destroy() throws IllegalStateException {
121 mImpl.setLivePusherReference(livePusher);
137 public void startPreview(SurfaceView surfaceView)
throws IllegalArgumentException, IllegalStateException {
141 mImpl.startPreview(surfaceView);
157 public void startPreviewAsync(SurfaceView surfaceView)
throws IllegalArgumentException, IllegalStateException {
161 mImpl.startPreviewAsync(surfaceView);
181 public void startPreview(Context context, FrameLayout frameLayout,
boolean isFullScreen)
throws IllegalArgumentException, IllegalStateException {
185 mImpl.startPreview(context, frameLayout, isFullScreen);
198 public void updatePreview(Context context, FrameLayout frameLayout,
boolean isFullScreen) {
202 mImpl.updatePreview(context, frameLayout, isFullScreen);
232 public void startPush(String url)
throws IllegalArgumentException, IllegalStateException {
236 mImpl.startPush(AlivcLiveURLTools.trimUrl(url));
250 public void startPushAsync(String url)
throws IllegalArgumentException, IllegalStateException {
254 mImpl.startPushAsync(AlivcLiveURLTools.trimUrl(url));
286 mImpl.restartPushAsync();
301 mImpl.reconnectPushAsync(AlivcLiveURLTools.trimUrl(url));
310 public void stopPush() throws IllegalStateException {
327 public void pause() throws IllegalStateException {
342 public void resume() throws IllegalStateException {
374 mImpl.switchCamera();
384 public void setAutoFocus(
boolean autoFocus)
throws IllegalStateException {
388 mImpl.setAutoFocus(autoFocus);
404 mImpl.focusCameraAtAdjustedPoint(x, y, autoFocus);
414 public void setZoom(
int zoom)
throws IllegalArgumentException, IllegalStateException {
432 return mImpl.getMaxZoom();
446 return mImpl.getCurrentZoom();
459 public void setMute(
boolean mute)
throws IllegalStateException {
481 mImpl.setMute(mute, muteLocalAudioMode);
491 public void setFlash(
boolean flash)
throws IllegalStateException {
495 mImpl.setFlash(flash);
509 mImpl.setPushMirror(mirror);
523 mImpl.setPreviewMirror(mirror);
539 return mImpl.setVideoMirrorMode(mirrorMode);
551 mImpl.setVideoConfig(videoConfig);
566 return mImpl.getVideoConfig();
581 mImpl.setTargetVideoBitrate(targetVideoBitrate);
592 public void setMinVideoBitrate(
int minVideoBitrate)
throws IllegalArgumentException, IllegalStateException {
596 mImpl.setMinVideoBitrate(minVideoBitrate);
612 mImpl.refreshPushURLToken(url);
625 return mImpl.isCameraSupportAutoFocus();
638 return mImpl.isCameraSupportFlash();
648 public boolean isPushing() throws IllegalStateException {
652 return mImpl.isPushing();
666 return mImpl.isNetworkPushing();
679 mImpl.setCustomDetect(customVideoDetect);
692 mImpl.setCustomFilter(customVideoFilter);
705 mImpl.setCustomAudioFilter(customAudioFilter);
719 return mImpl.getCurrentStatus();
735 mImpl.setLivePushErrorListener(errorListener);
749 mImpl.setLivePushInfoListener(infoListener);
763 mImpl.setLivePushNetworkListener(networkListener);
777 mImpl.setLivePushBGMListener(pushBGMListener);
791 mImpl.setLivePushAudioFrameListener(pushAudioFrameListener);
804 mImpl.setLivePushRenderContextListener(renderCtxListener);
818 return mImpl.getLivePushStatsInfo();
831 return mImpl.getPushUrl();
846 return mImpl.setParameter(parameter);
861 return mImpl.getParameter(parameter);
874 mImpl.setPreviewOrientation(orientation);
891 return mImpl.startBGMAsync(path);
908 return mImpl.startBGMAsync(path, bgmConfig);
921 mImpl.stopBGMAsync();
936 return mImpl.getBGMDuration();
951 return mImpl.getBGMCurrentPosition();
960 public void pauseBGM() throws IllegalStateException {
987 public void setBGMLoop(
boolean isLoop)
throws IllegalStateException {
991 mImpl.setBGMLoop(isLoop);
1002 if (mImpl ==
null) {
1005 mImpl.setBGMEarsBack(isOpen);
1016 public void setBGMVolume(
int volume)
throws IllegalStateException, IllegalArgumentException {
1017 if (mImpl ==
null) {
1020 mImpl.setBGMVolume(volume);
1031 public void setCaptureVolume(
int volume)
throws IllegalStateException, IllegalArgumentException {
1032 if (mImpl ==
null) {
1035 mImpl.setCaptureVolume(volume);
1048 if (mImpl ==
null) {
1051 mImpl.setAudioDenoise(enable);
1071 if (mImpl ==
null) {
1074 return mImpl.startIntelligentDenoise();
1085 if (mImpl ==
null) {
1088 return mImpl.stopIntelligentDenoise();
1099 if (mImpl ==
null) {
1102 mImpl.setQualityMode(mode);
1113 if (mImpl ==
null) {
1116 mImpl.setPreviewMode(mode);
1126 if (mImpl ==
null) {
1129 mImpl.pauseScreenCapture();
1139 if (mImpl ==
null) {
1142 mImpl.resumeScreenCapture();
1153 if (mImpl ==
null) {
1156 return mImpl.getVideoCodecType();
1166 if (mImpl ==
null) {
1169 return mImpl.getLastError();
1185 if (mImpl ==
null) {
1188 mImpl.changeResolution(resolution);
1203 if (mImpl ==
null) {
1206 mImpl.addWaterMark(path, x, y, width);
1222 if (mImpl ==
null) {
1225 mImpl.addWaterMark(bitmap, x, y, width);
1235 if (mImpl ==
null) {
1238 mImpl.setWatermarkVisible(visible);
1249 public int startCamera(SurfaceView surfaceView)
throws IllegalStateException {
1250 if (mImpl ==
null) {
1253 return mImpl.startCamera(surfaceView);
1261 if (mImpl ==
null) {
1274 if (mImpl ==
null) {
1277 mImpl.setScreenOrientation(orientation);
1291 if (mImpl ==
null) {
1294 return mImpl.startCameraMix(x, y, w, h);
1302 if (mImpl ==
null) {
1305 mImpl.stopCameraMix();
1320 if (mImpl ==
null) {
1323 return mImpl.startLocalRecord(localRecordConfig);
1336 if (mImpl ==
null) {
1339 mImpl.stopLocalRecord();
1351 if (mImpl ==
null) {
1354 return mImpl.startScreenShare();
1365 if (mImpl ==
null) {
1368 return mImpl.stopScreenShare();
1383 if (mImpl ==
null) {
1386 return mImpl.startLocalDualAudioStream();
1398 if (mImpl ==
null) {
1401 return mImpl.stopLocalDualAudioStream();
1413 if (mImpl ==
null) {
1416 mImpl.snapshot(count, interval, listener);
1430 if (mImpl ==
null) {
1433 mImpl.setExternalVideoSource(enable, useTexture, videoStreamType, previewDisplayMode);
1447 if (mImpl ==
null) {
1450 return mImpl.pushExternalVideoFrame(rawDataSample, videoStreamType);
1462 if (mImpl ==
null) {
1465 return mImpl.setMixedWithMic(mixed);
1477 if (mImpl ==
null) {
1480 return mImpl.addExternalAudioStream(externalAudioStreamConfig);
1494 if (mImpl ==
null) {
1497 return mImpl.pushExternalAudioStream(streamId, audioFrame);
1510 if (mImpl ==
null) {
1513 return mImpl.setExternalAudioStreamPlayoutVolume(streamId, playoutVolume);
1526 if (mImpl ==
null) {
1529 return mImpl.setExternalAudioStreamPublishVolume(streamId, publishVolume);
1541 if (mImpl ==
null) {
1544 return mImpl.removeExternalAudioStream(streamId);
1562 public void inputStreamVideoPtr(
long dataPtr,
int width,
int height,
int stride,
int size,
long pts,
int rotation) {
1563 if (mImpl ==
null) {
1566 mImpl.inputStreamVideoPtr(dataPtr, width, height, stride, size, pts, rotation);
1582 public void inputStreamVideoData(
byte[] data,
int width,
int height,
int stride,
int size,
long pts,
int rotation) {
1583 if (mImpl ==
null) {
1586 mImpl.inputStreamVideoData(data, width, height, stride, size, pts, rotation);
1603 if (mImpl ==
null) {
1606 mImpl.inputStreamAudioPtr(dataPtr, size, sampleRate, channels, pts);
1621 if (mImpl ==
null) {
1624 mImpl.inputStreamAudioData(data, size, sampleRate, channels, pts);
1640 if (mImpl ==
null) {
1643 return mImpl.addDynamicsAddons(path, x, y, w, h);
1653 if (mImpl ==
null) {
1656 mImpl.removeDynamicsAddons(
id);
1666 if (mImpl ==
null) {
1669 mImpl.setExposure(exposure);
1679 if (mImpl ==
null) {
1682 return mImpl.getCurrentExposure();
1692 if (mImpl ==
null) {
1695 return mImpl.getSupportedMinExposure();
1705 if (mImpl ==
null) {
1708 return mImpl.getSupportedMaxExposure();
1723 if (mImpl ==
null) {
1726 return mImpl.enableSEIVideoStream(enable);
1745 public void sendMessage(String info,
int repeat,
int delay,
boolean isKeyFrame) {
1746 if (mImpl ==
null) {
1749 mImpl.sendMessage(info, repeat, delay, isKeyFrame);
1770 public void sendMessage(String info,
int repeat,
int delay,
boolean isKeyFrame,
int payloadType) {
1771 if (mImpl ==
null) {
1774 mImpl.sendMessage(info, repeat, delay, isKeyFrame, payloadType);
1788 if (mImpl ==
null) {
1791 return mImpl.sendDataChannelMessage(message);
1814 if (mImpl ==
null) {
1817 return mImpl.setLiveMixTranscodingConfig(config);
1834 if (mImpl ==
null) {
1837 return mImpl.muteLocalCamera(mute);
1852 if (mImpl ==
null) {
1855 return mImpl.enableLocalCamera(enable);
1870 if (mImpl ==
null) {
1873 return mImpl.startAudioCapture(keepAlive);
1888 if (mImpl ==
null) {
1891 return mImpl.stopAudioCapture();
1903 if (mImpl ==
null) {
1906 return mImpl.enableSpeakerphone(enable);
1917 if (mImpl ==
null) {
1920 return mImpl.isSpeakerphoneOn();
1933 if (mImpl ==
null) {
1936 return mImpl.setChannelProfile(channelProfile);
1948 if (mImpl ==
null) {
1951 return mImpl.setAudioProfile(audioProfileQualityMode);
1964 if (mImpl ==
null) {
1967 return mImpl.setAudioEffectVoiceChangeMode(mode);
1980 if (mImpl ==
null) {
1983 return mImpl.setAudioEffectReverbMode(mode);
1996 if (mImpl ==
null) {
1999 return mImpl.setAudioEffectPitchValue(value);
2012 if (mImpl ==
null) {
2015 return mImpl.setAudioEffectBeautifyMode(audioEffectBeautifyMode);
2029 if (mImpl ==
null) {
2032 return mImpl.setAudioEffectReverbParamType(audioEffectReverbParamType, value);
2047 if (mImpl ==
null) {
2050 return mImpl.setAudioEffectEqualizationParam(audioEffectEqualizationBandFrequency, gain);
2067 if (mImpl ==
null) {
2070 return mImpl.enableAudioVolumeIndication(interval, smooth, reportVad);
2087 if (mImpl ==
null) {
2090 return mImpl.enableAudioFrameObserver(enable, audioSource, config);
2104 if (mImpl ==
null) {
2107 return mImpl.preloadAudioEffect(soundId, filePath);
2119 if (mImpl ==
null) {
2122 return mImpl.unloadAudioEffect(soundId);
2137 if (mImpl ==
null) {
2140 return mImpl.playAudioEffect(soundId, filePath, config);
2152 if (mImpl ==
null) {
2155 return mImpl.stopAudioEffect(soundId);
2166 if (mImpl ==
null) {
2169 return mImpl.stopAllAudioEffects();
2182 if (mImpl ==
null) {
2185 return mImpl.setAudioEffectPublishVolume(soundId, volume);
2197 if (mImpl ==
null) {
2200 return mImpl.getAudioEffectPublishVolume(soundId);
2213 if (mImpl ==
null) {
2216 return mImpl.setAudioEffectPlayoutVolume(soundId, volume);
2228 if (mImpl ==
null) {
2231 return mImpl.getAudioEffectPlayoutVolume(soundId);
2243 if (mImpl ==
null) {
2246 return mImpl.setAllAudioEffectsPublishVolume(volume);
2258 if (mImpl ==
null) {
2261 return mImpl.setAllAudioEffectsPlayoutVolume(volume);
2273 if (mImpl ==
null) {
2276 return mImpl.pauseAudioEffect(soundId);
2287 if (mImpl ==
null) {
2290 return mImpl.pauseAllAudioEffects();
2302 if (mImpl ==
null) {
2305 return mImpl.resumeAudioEffect(soundId);
2316 if (mImpl ==
null) {
2319 return mImpl.resumeAllAudioEffects();
2334 if (mImpl ==
null) {
2337 return mImpl.startLastMileDetect(networkQualityProbeConfig);
2348 if (mImpl ==
null) {
2351 return mImpl.stopLastMileDetect();
2363 if (mImpl ==
null) {
2366 return mImpl.getCurrentEncoderManufacturer(isCameraStream);
2377 if (mImpl ==
null) {
2380 return mImpl.getLiveTraceId();
static void loadInstance(Context context)
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)