Package com.alivc.live.pusher
Class AlivcLivePusher
- java.lang.Object
-
- com.alivc.live.pusher.AlivcLivePusher
-
- All Implemented Interfaces:
ILivePusher
public class AlivcLivePusher extends java.lang.Object implements ILivePusher
通过AlivcLivePusher类可以完成音视频的采集推流。关于AlivcLivePusher的主题有:
一、状态图
音视频推流的控制按照状态机进行管理。下面的状态图展示了一个AlivcLivePusher对象在使用过程中的完整的生命周期和状态变化。
二、方法调用的状态要求
方法名 有效状态 无效状态 备注 init {Idle, Initialized} {Previewed, Pushed, Paused, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Initialized destroy any {} 调用此方法之后,状态变为{Idle} startPreview {Initialized, Previewed} {Idle, Pushed, Paused, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Previewed startPreviewAysnc {Initialized, Previewed} {Idle, Pushed, Paused, Error,} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Previewed stopPreview {Initialized, Previewed} {Idle, Pushed, Paused, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Initialized startPush {Initialized, Previewed, Pushed} {Idle,Paused, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Pushed startPushAysnc {Initialized, Previewed, Pushed} {Idle, Paused, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Pushed restartPush {Pushed, Error} {Idle, Initialized, Previewed, Paused} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Pushed restartPushAync {Pushed, Error} {Idle, Initialized, Previewed, Paused,} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Pushed reconnectPushAsync {Pushed, Paused} {Idle, Initialized, Previewed, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Initialized stopPush {Previewed, Pushed,Error} {Idle, Initialized, Previewed, Pushed, Paused} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Initialized pause {Pushed,Paused,Previewed} {Idle, Initialized, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Initialized resume {Paused,Pushed,Previewed,Initialized} {Idle, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Initialized resumeAsync {Paused,Pushed,Previewed,Initialized} {Idle, Error} 无效的状态调用此方法,状态不变。在有效的状态下调用此方法,状态变为Initialized 三、权限
这个类需要 {android.permission.CAMERA} {android.permission.RECORD_AUDIO} 权限
七、暂停和恢复
在Activity的onPause和onResume的时候,需要调用pause和resume函数来应对处理处理前后台切换、锁屏、界面跳转及电话等场景。
八、同步和异步
在使用推流SDK的过程中,有以下几个接口由于涉及到硬解和网络,导致接口调用时间消耗可能会较长,因此我们同时也提供了异步接口。此外,我们还提供了一个异步的重连接口方便来处理网络错误。
- startPreview/startPreviewAsync
- startPush/startPushAsync
- restartPush/restartPushAsync
- resume/resumeAsync
- reconnectAsync
九、异常
在调用接口的时候,有的接口会抛出 IllegalArgumentException 和 IllegalStateException
- IllegalArgumentException 表示调用的api的输入参数不合法
- IllegalStateException 表示调用api时的状态不对
-
-
Constructor Summary
Constructors Constructor Description AlivcLivePusher()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
addDynamicsAddons(java.lang.String path, float x, float y, float w, float h)
添加动态贴纸int
addMixAudio(int channels, AlivcSoundFormat format, int audioSample)
添加一路音频混流,并设置相应音频格式和采样率int
addMixVideo(AlivcImageFormat format, int width, int height, int rotation, float displayX, float displayY, float displayW, float displayH, boolean adjustHeight)
添加一路视频混流,并设置狂高,设置混在主流的相对位置void
addWaterMark(java.lang.String path, float x, float y, float width)
添加水印,起点位置坐标x[0,width) y[0,height),宽度(0,width],最多添加3个 需在startPreview之后调用void
changeResolution(AlivcResolutionEnum resolutionEnum)
设置分辨率void
destroy()
释放推流void
focusCameraAtAdjustedPoint(float x, float y, boolean autoFocus)
对焦,对焦点的坐标x[0,屏幕宽度],y[0,屏幕宽度]int
getCurrentExposure()
获取采集曝光AlivcLivePushStats
getCurrentStatus()
获取当前推流状态int
getCurrentZoom()
获取当前缩放值AlivcLivePushError
getLastError()
获取最近的错误值AlivcLivePushStatsInfo
getLivePushStatsInfo()
获取推流统计数据java.lang.String
getLiveTraceId()
int
getMaxZoom()
获取摄像头支持的最大缩放值, 0 : 不支持缩放 大于0 : 最大缩放值java.lang.String
getPushUrl()
获取推流URLint
getSupportedMaxExposure()
获取采集支持最大曝光int
getSupportedMinExposure()
获取采集支持最小曝光void
init(android.content.Context context, AlivcLivePushConfig config)
初始化推流参数boolean
inputMixAudioData(int handler, byte[] data, int size, long pts)
输入音频混流数据boolean
inputMixAudioPtr(int handler, long dataptr, int size, long pts)
输入音频混流数据void
inputMixTexture(int handler, int texture, int width, int height, long pts, int rotation)
输入视频混流数据void
inputMixVideoData(int handler, byte[] data, int width, int height, int stride, int size, long pts, int rotation)
输入视频混流数据void
inputMixVideoPtr(int handler, long dataptr, int width, int height, int stride, int size, long pts, int rotation)
输入视频混流数据void
inputStreamAudioData(byte[] data, int size, int sampleRate, int channels, long pts)
输入自定义音频数据void
inputStreamAudioPtr(long dataPtr, int size, int sampleRate, int channels, long pts)
输入自定义音频数据void
inputStreamTexture(int textureId, int width, int height, int stride, long pts, int rotation, long extra)
输入自定义视频流void
inputStreamVideoData(byte[] data, int width, int height, int stride, int size, long pts, int rotation)
输入自定义视频流void
inputStreamVideoPtr(long dataptr, int width, int height, int stride, int size, long pts, int rotation)
输入自定义视频流boolean
isCameraSupportAutoFocus()
获取是否支持自动对焦boolean
isCameraSupportFlash()
获取是否支持闪光灯boolean
isNetworkPushing()
网络是否正在推流boolean
isPushing()
SDK是否正在推流int
mixStreamChangePosition(int vid, float x, float y, float w, float h)
void
mixStreamMirror(int vid, boolean mirror)
int
mixStreamRequireMain(int vid, boolean require)
void
pause()
暂停推流void
pauseBGM()
暂停播放背景音乐void
pauseScreenCapture()
暂停推流void
reconnectPushAsync(java.lang.String url)
重新连接进行推流void
removeDynamicsAddons(int id)
删除动态贴纸void
removeMixAudio(int handler)
移除已添加的一路音频混流void
removeMixVideo(int handler)
移除已添加的一路视频混流void
restartPush()
重新开始推流void
restartPushAync()
重新开始推流void
resume()
恢复推流void
resumeAsync()
异步恢复推流void
resumeBGM()
恢复播放背景音乐void
resumeScreenCapture()
恢复推流void
sendMessage(java.lang.String info, int repeat, int delay, boolean isKeyFrame)
推流端发送自定义消息void
setAudioDenoise(boolean on)
设置音频降噪void
setAutoFocus(boolean autoFocus)
设置自动对焦void
setBGMEarsBack(boolean isOpen)
设置耳返开关void
setBGMLoop(boolean isLoop)
设置背景音乐是否循环播放void
setBGMVolume(int volume)
设置背景音乐混音 人声音量void
setCaptureVolume(int volume)
设置背景音乐混音 音乐音量void
setCustomAudioFilter(com.alivc.component.custom.AlivcLivePushCustomAudioFilter customAudioFilter)
设置用户自定义音频处理回调void
setCustomDetect(com.alivc.component.custom.AlivcLivePushCustomDetect customVideoDetect)
设置用户自定义视频人脸识别回调void
setCustomFilter(com.alivc.component.custom.AlivcLivePushCustomFilter customVideoFilter)
设置用户自定义视频美颜回调void
setExposure(int exposure)
设置采集曝光void
setFlash(boolean flash)
是否打开闪光灯void
setLivePushBGMListener(AlivcLivePushBGMListener pushBGMListener)
设置背景播放通知事件void
setLivePushErrorListener(AlivcLivePushErrorListener errorListener)
设置推流错误事件void
setLivePushInfoListener(AlivcLivePushInfoListener infoListener)
设置推流通知事件void
setLivePushNetworkListener(AlivcLivePushNetworkListener networkListner)
设置网络通知事件void
setLivePushRenderContextListener(AlivcLivePusherRenderContextListener renderCtxListener)
设置render的context监听void
setMainStreamPosition(float startX, float startY, float w, float h)
void
setMinVideoBitrate(int minVideoBitrate)
设置最小视频码率[100,5000] (Kbps)void
setMute(boolean mute)
是否静音void
setPreviewMirror(boolean mirror)
预览镜像开关void
setPreviewMode(AlivcPreviewDisplayMode mode)
设置预览显示模式void
setPreviewOrientation(AlivcPreviewOrientationEnum orientation)
设置推流方向,默认竖屏void
setPushMirror(boolean mirror)
推流端是否水平镜像void
setQualityMode(AlivcQualityModeEnum mode)
设置视频质量模式void
setScreenOrientation(int orientation)
录屏模式下,设置感应的屏幕旋转角度void
setTargetVideoBitrate(int targetVideoBitrate)
设置目标视频码率[100,5000](Kbps)void
setWatermarkVisible(boolean visible)
设置水印可见void
setZoom(int zoom)
设置缩放[0,getMaxZoom()]void
snapshot(int count, int interval, AlivcSnapshotListener listener)
视频流截图void
startBGMAsync(java.lang.String path)
播放背景音int
startCamera(android.view.SurfaceView surfaceView)
录屏模式下,开启摄像头预览 如果不需要预览,则surfaceview填为nullint
startCameraMix(float x, float y, float w, float h)
录屏模式下,开启摄像头混流void
startPreview(android.view.SurfaceView surfaceView)
开始预览void
startPreviewAysnc(android.view.SurfaceView surfaceView)
异步开始预览void
startPush(java.lang.String url)
开始推流void
startPushAysnc(java.lang.String url)
开始推流void
stopBGMAsync()
停止播放背景音乐void
stopCamera()
录屏模式下,关闭摄像头预览void
stopCameraMix()
录屏模式下,停止摄像头混流void
stopPreview()
结束预览void
stopPush()
结束推流void
switchCamera()
切换摄像头
-
-
-
Method Detail
-
init
public void init(android.content.Context context, AlivcLivePushConfig config) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
初始化推流参数- Specified by:
init
in interfaceILivePusher
- Parameters:
context
- 上下文config
- 配置- Throws:
java.lang.IllegalArgumentException
- 如果 config为空,或者config的值为无效(例如码率的值超过范围)java.lang.IllegalStateException
- 如果状态不对,例如已经初始化,但是还没有销毁
-
setCustomDetect
public void setCustomDetect(com.alivc.component.custom.AlivcLivePushCustomDetect customVideoDetect)
设置用户自定义视频人脸识别回调- Specified by:
setCustomDetect
in interfaceILivePusher
- Parameters:
customVideoDetect
- 回调接口
-
setCustomFilter
public void setCustomFilter(com.alivc.component.custom.AlivcLivePushCustomFilter customVideoFilter)
设置用户自定义视频美颜回调- Specified by:
setCustomFilter
in interfaceILivePusher
- Parameters:
customVideoFilter
- 回调接口
-
setCustomAudioFilter
public void setCustomAudioFilter(com.alivc.component.custom.AlivcLivePushCustomAudioFilter customAudioFilter)
设置用户自定义音频处理回调- Specified by:
setCustomAudioFilter
in interfaceILivePusher
- Parameters:
customAudioFilter
- 回调接口
-
destroy
public void destroy() throws java.lang.IllegalStateException
释放推流- Specified by:
destroy
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化
-
startPreview
public void startPreview(android.view.SurfaceView surfaceView) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
开始预览- Specified by:
startPreview
in interfaceILivePusher
- Parameters:
surfaceView
- surfaceview- Throws:
java.lang.IllegalArgumentException
- 如果surfaceView为空,或者surfaceView的surface未创建/已销毁java.lang.IllegalStateException
- 如果状态不对,例如还未初始化
-
startPreviewAysnc
public void startPreviewAysnc(android.view.SurfaceView surfaceView) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
异步开始预览- Specified by:
startPreviewAysnc
in interfaceILivePusher
- Parameters:
surfaceView
- surfaceview- Throws:
java.lang.IllegalArgumentException
- 如果surfaceView为空,或者surfaceView的surface未创建/已销毁java.lang.IllegalStateException
- 如果状态不对,例如还未初始化
-
stopPreview
public void stopPreview() throws java.lang.IllegalStateException
结束预览- Specified by:
stopPreview
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
startPush
public void startPush(java.lang.String url) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
开始推流- Specified by:
startPush
in interfaceILivePusher
- Parameters:
url
- 推流Url- Throws:
java.lang.IllegalArgumentException
- 如果url为空,或者不是有效的url格式java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
startPushAysnc
public void startPushAysnc(java.lang.String url) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
开始推流- Specified by:
startPushAysnc
in interfaceILivePusher
- Parameters:
url
- 推流Url- Throws:
java.lang.IllegalArgumentException
- 如果url为空,或者不是有效的url格式java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
restartPush
public void restartPush() throws java.lang.IllegalStateException
重新开始推流- Specified by:
restartPush
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/已经stopPush
-
restartPushAync
public void restartPushAync() throws java.lang.IllegalStateException
重新开始推流- Specified by:
restartPushAync
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/已经stopPush
-
reconnectPushAsync
public void reconnectPushAsync(java.lang.String url) throws java.lang.IllegalStateException
重新连接进行推流- Specified by:
reconnectPushAsync
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
-
stopPush
public void stopPush() throws java.lang.IllegalStateException
结束推流- Specified by:
stopPush
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/已经stopPush
-
pause
public void pause() throws java.lang.IllegalStateException
暂停推流- Specified by:
pause
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/已经pause
-
resume
public void resume() throws java.lang.IllegalStateException
恢复推流- Specified by:
resume
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/未pause/已resume
-
resumeAsync
public void resumeAsync() throws java.lang.IllegalStateException
异步恢复推流- Specified by:
resumeAsync
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/未pause/已resume
-
pauseScreenCapture
public void pauseScreenCapture() throws java.lang.IllegalStateException
暂停推流- Specified by:
pauseScreenCapture
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/已经pause
-
resumeScreenCapture
public void resumeScreenCapture() throws java.lang.IllegalStateException
恢复推流- Specified by:
resumeScreenCapture
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush/未pause/已resume
-
switchCamera
public void switchCamera() throws java.lang.IllegalStateException
切换摄像头- Specified by:
switchCamera
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
setAutoFocus
public void setAutoFocus(boolean autoFocus) throws java.lang.IllegalStateException
设置自动对焦- Specified by:
setAutoFocus
in interfaceILivePusher
- Parameters:
autoFocus
- 自动聚焦- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
focusCameraAtAdjustedPoint
public void focusCameraAtAdjustedPoint(float x, float y, boolean autoFocus) throws java.lang.IllegalStateException
对焦,对焦点的坐标x[0,屏幕宽度],y[0,屏幕宽度]- Specified by:
focusCameraAtAdjustedPoint
in interfaceILivePusher
- Parameters:
x
- 对焦的点x坐标y
- 对焦的点y坐标yautoFocus
- 是否自动聚焦- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
setExposure
public void setExposure(int exposure)
设置采集曝光- Specified by:
setExposure
in interfaceILivePusher
-
getCurrentExposure
public int getCurrentExposure()
获取采集曝光- Specified by:
getCurrentExposure
in interfaceILivePusher
-
getSupportedMinExposure
public int getSupportedMinExposure()
获取采集支持最小曝光- Specified by:
getSupportedMinExposure
in interfaceILivePusher
-
getSupportedMaxExposure
public int getSupportedMaxExposure()
获取采集支持最大曝光- Specified by:
getSupportedMaxExposure
in interfaceILivePusher
-
setZoom
public void setZoom(int zoom) throws java.lang.IllegalStateException
设置缩放[0,getMaxZoom()]- Specified by:
setZoom
in interfaceILivePusher
- Parameters:
zoom
- 0~getMaxZoom()- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
getMaxZoom
public int getMaxZoom() throws java.lang.IllegalStateException
获取摄像头支持的最大缩放值, 0 : 不支持缩放 大于0 : 最大缩放值- Specified by:
getMaxZoom
in interfaceILivePusher
- Returns:
- 最大zoom值
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
getCurrentZoom
public int getCurrentZoom() throws java.lang.IllegalStateException
获取当前缩放值- Specified by:
getCurrentZoom
in interfaceILivePusher
- Returns:
- 当前缩放值
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
setMute
public void setMute(boolean mute) throws java.lang.IllegalStateException
是否静音- Specified by:
setMute
in interfaceILivePusher
- Parameters:
mute
- true:静音推流 false:正常推流- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush
-
setFlash
public void setFlash(boolean flash) throws java.lang.IllegalStateException
是否打开闪光灯- Specified by:
setFlash
in interfaceILivePusher
- Parameters:
flash
- true:打开闪光灯 false:关闭闪光灯- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
setPushMirror
public void setPushMirror(boolean mirror) throws java.lang.IllegalStateException
推流端是否水平镜像- Specified by:
setPushMirror
in interfaceILivePusher
- Parameters:
mirror
- true:打开推流镜像 false:关闭推流镜像- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush
-
setPreviewMirror
public void setPreviewMirror(boolean mirror) throws java.lang.IllegalStateException
预览镜像开关- Specified by:
setPreviewMirror
in interfaceILivePusher
- Parameters:
mirror
- true:打开预览镜像 false:关闭预览镜像- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview
-
setTargetVideoBitrate
public void setTargetVideoBitrate(int targetVideoBitrate) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
设置目标视频码率[100,5000](Kbps)- Specified by:
setTargetVideoBitrate
in interfaceILivePusher
- Parameters:
targetVideoBitrate
- 目标视频编码码率- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPushjava.lang.IllegalArgumentException
-
setMinVideoBitrate
public void setMinVideoBitrate(int minVideoBitrate) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
设置最小视频码率[100,5000] (Kbps)- Specified by:
setMinVideoBitrate
in interfaceILivePusher
- Parameters:
minVideoBitrate
- 最小视频编码码率- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPushjava.lang.IllegalArgumentException
-
isCameraSupportAutoFocus
public boolean isCameraSupportAutoFocus()
获取是否支持自动对焦- Specified by:
isCameraSupportAutoFocus
in interfaceILivePusher
- Returns:
- 是否支持自动对焦
-
isCameraSupportFlash
public boolean isCameraSupportFlash()
获取是否支持闪光灯- Specified by:
isCameraSupportFlash
in interfaceILivePusher
- Returns:
- 是否支持闪光灯
-
isPushing
public boolean isPushing() throws java.lang.IllegalStateException
SDK是否正在推流- Specified by:
isPushing
in interfaceILivePusher
- Returns:
- true:正在推流 false:未推流
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush
-
getCurrentStatus
public AlivcLivePushStats getCurrentStatus()
获取当前推流状态- Specified by:
getCurrentStatus
in interfaceILivePusher
- Returns:
-
getLastError
public AlivcLivePushError getLastError()
获取最近的错误值- Specified by:
getLastError
in interfaceILivePusher
- Returns:
-
snapshot
public void snapshot(int count, int interval, AlivcSnapshotListener listener)
视频流截图- Specified by:
snapshot
in interfaceILivePusher
- Parameters:
count
- 截取图片的个数interval
- 每张图片的间隔listener
- 接口回调
-
isNetworkPushing
public boolean isNetworkPushing() throws java.lang.IllegalStateException
网络是否正在推流- Specified by:
isNetworkPushing
in interfaceILivePusher
- Returns:
- true:正在推流 false:未推流
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush
-
setLivePushErrorListener
public void setLivePushErrorListener(AlivcLivePushErrorListener errorListener)
设置推流错误事件- Specified by:
setLivePushErrorListener
in interfaceILivePusher
- Parameters:
errorListener
- 错误监听器
-
setLivePushInfoListener
public void setLivePushInfoListener(AlivcLivePushInfoListener infoListener)
设置推流通知事件- Specified by:
setLivePushInfoListener
in interfaceILivePusher
- Parameters:
infoListener
- 通知监听器
-
setLivePushNetworkListener
public void setLivePushNetworkListener(AlivcLivePushNetworkListener networkListner)
设置网络通知事件- Specified by:
setLivePushNetworkListener
in interfaceILivePusher
- Parameters:
networkListner
- 通知监听器
-
setLivePushBGMListener
public void setLivePushBGMListener(AlivcLivePushBGMListener pushBGMListener)
设置背景播放通知事件- Specified by:
setLivePushBGMListener
in interfaceILivePusher
- Parameters:
pushBGMListener
- 通知监听器
-
setLivePushRenderContextListener
public void setLivePushRenderContextListener(AlivcLivePusherRenderContextListener renderCtxListener)
设置render的context监听- Specified by:
setLivePushRenderContextListener
in interfaceILivePusher
- Parameters:
renderCtxListener
- render的context监听
-
getLivePushStatsInfo
public AlivcLivePushStatsInfo getLivePushStatsInfo() throws java.lang.IllegalStateException
获取推流统计数据- Specified by:
getLivePushStatsInfo
in interfaceILivePusher
- Returns:
- 推流统计数据
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化
-
getPushUrl
public java.lang.String getPushUrl() throws java.lang.IllegalStateException
获取推流URL- Specified by:
getPushUrl
in interfaceILivePusher
- Returns:
- 推流URL
- Throws:
java.lang.IllegalStateException
- 如果状态不对,例如还未初始化/未startPreview/未startPush
-
setPreviewOrientation
public void setPreviewOrientation(AlivcPreviewOrientationEnum orientation)
设置推流方向,默认竖屏- Specified by:
setPreviewOrientation
in interfaceILivePusher
- Parameters:
orientation
- 推流方向
-
getLiveTraceId
public java.lang.String getLiveTraceId()
-
sendMessage
public void sendMessage(java.lang.String info, int repeat, int delay, boolean isKeyFrame) throws java.lang.IllegalStateException, java.lang.IllegalArgumentException
推流端发送自定义消息- Parameters:
info
- 需要插入流的SEI消息体,建议是json格式repeat
- 发送的帧数delay
- 延时多少毫秒发送isKeyFrame
- 是否只发送关键帧- Throws:
java.lang.IllegalStateException
java.lang.IllegalArgumentException
-
startBGMAsync
public void startBGMAsync(java.lang.String path) throws java.lang.IllegalStateException
播放背景音- Specified by:
startBGMAsync
in interfaceILivePusher
- Parameters:
path
- 背景音乐路径- Throws:
java.lang.IllegalStateException
-
stopBGMAsync
public void stopBGMAsync() throws java.lang.IllegalStateException
停止播放背景音乐- Specified by:
stopBGMAsync
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
-
pauseBGM
public void pauseBGM() throws java.lang.IllegalStateException
暂停播放背景音乐- Specified by:
pauseBGM
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
-
resumeBGM
public void resumeBGM() throws java.lang.IllegalStateException
恢复播放背景音乐- Specified by:
resumeBGM
in interfaceILivePusher
- Throws:
java.lang.IllegalStateException
-
setBGMLoop
public void setBGMLoop(boolean isLoop) throws java.lang.IllegalStateException
设置背景音乐是否循环播放- Specified by:
setBGMLoop
in interfaceILivePusher
- Parameters:
isLoop
- 是否循环 true:循环 false:不循环- Throws:
java.lang.IllegalStateException
-
setBGMEarsBack
public void setBGMEarsBack(boolean isOpen) throws java.lang.IllegalStateException
设置耳返开关- Specified by:
setBGMEarsBack
in interfaceILivePusher
- Parameters:
isOpen
- 是否循环 true:开启耳返 false:关闭耳返- Throws:
java.lang.IllegalStateException
-
setBGMVolume
public void setBGMVolume(int volume) throws java.lang.IllegalStateException, java.lang.IllegalArgumentException
设置背景音乐混音 人声音量- Specified by:
setBGMVolume
in interfaceILivePusher
- Parameters:
volume
- 人声音量大小 范围:[0 ~ 100] 默认:50- Throws:
java.lang.IllegalStateException
java.lang.IllegalArgumentException
-
setCaptureVolume
public void setCaptureVolume(int volume) throws java.lang.IllegalStateException, java.lang.IllegalArgumentException
设置背景音乐混音 音乐音量- Specified by:
setCaptureVolume
in interfaceILivePusher
- Parameters:
volume
- 音乐音量大小 范围:[0 ~ 100] 默认:50- Throws:
java.lang.IllegalStateException
java.lang.IllegalArgumentException
-
setAudioDenoise
public void setAudioDenoise(boolean on) throws java.lang.IllegalStateException
设置音频降噪- Specified by:
setAudioDenoise
in interfaceILivePusher
- Parameters:
on
- true:开启 false:关闭- Throws:
java.lang.IllegalStateException
-
setQualityMode
public void setQualityMode(AlivcQualityModeEnum mode) throws java.lang.IllegalStateException
设置视频质量模式- Specified by:
setQualityMode
in interfaceILivePusher
- Parameters:
mode
- 视频质量模式- Throws:
java.lang.IllegalStateException
-
setPreviewMode
public void setPreviewMode(AlivcPreviewDisplayMode mode) throws java.lang.IllegalStateException
设置预览显示模式- Specified by:
setPreviewMode
in interfaceILivePusher
- Parameters:
mode
- 预览显示模式- Throws:
java.lang.IllegalStateException
-
addWaterMark
public void addWaterMark(java.lang.String path, float x, float y, float width)
添加水印,起点位置坐标x[0,width) y[0,height),宽度(0,width],最多添加3个 需在startPreview之后调用- Specified by:
addWaterMark
in interfaceILivePusher
- Parameters:
path
- 水印图片x
- 水印左上角x轴位置 相对位置 0~1y
- 水印右上角y轴位置 相对位置 0~1width
- 水印显示宽度 相对位置 0~1
-
setWatermarkVisible
public void setWatermarkVisible(boolean visible)
设置水印可见- Specified by:
setWatermarkVisible
in interfaceILivePusher
- Parameters:
visible
- 是否可见
-
startCamera
public int startCamera(android.view.SurfaceView surfaceView) throws java.lang.IllegalStateException
录屏模式下,开启摄像头预览 如果不需要预览,则surfaceview填为null- Specified by:
startCamera
in interfaceILivePusher
- Parameters:
surfaceView
- surfaceView- Returns:
- Throws:
java.lang.IllegalStateException
-
setScreenOrientation
public void setScreenOrientation(int orientation)
录屏模式下,设置感应的屏幕旋转角度- Specified by:
setScreenOrientation
in interfaceILivePusher
- Parameters:
orientation
- 旋转角度
-
stopCamera
public void stopCamera()
录屏模式下,关闭摄像头预览- Specified by:
stopCamera
in interfaceILivePusher
-
startCameraMix
public int startCameraMix(float x, float y, float w, float h)
录屏模式下,开启摄像头混流- Specified by:
startCameraMix
in interfaceILivePusher
- Parameters:
x
- 混流显示x初始位置(0~1.0f)y
- 混流显示y初始位置(0~1.0f)w
- 混流显示宽度(0~1.0f)h
- 混流显示高度(0~1.0f)- Returns:
-
stopCameraMix
public void stopCameraMix()
录屏模式下,停止摄像头混流- Specified by:
stopCameraMix
in interfaceILivePusher
-
changeResolution
public void changeResolution(AlivcResolutionEnum resolutionEnum)
设置分辨率- Specified by:
changeResolution
in interfaceILivePusher
- Parameters:
resolutionEnum
- 分辨率枚举
-
mixStreamRequireMain
public int mixStreamRequireMain(int vid, boolean require)
-
mixStreamChangePosition
public int mixStreamChangePosition(int vid, float x, float y, float w, float h)
-
mixStreamMirror
public void mixStreamMirror(int vid, boolean mirror)
-
addMixVideo
public int addMixVideo(AlivcImageFormat format, int width, int height, int rotation, float displayX, float displayY, float displayW, float displayH, boolean adjustHeight)
添加一路视频混流,并设置狂高,设置混在主流的相对位置- Parameters:
format
- 当前输入视频图像格式width
- 当前输入视频图像宽度height
- 当前输入视频图像高度rotation
- 当前输入视频图像旋转角度displayX
- 当前混流起始位置XdisplayY
- 当前混流起始位置YdisplayW
- 当前混流显示区域WidthdisplayH
- 当前混流显示区域Height- Returns:
- 返回当前视频混流videoHandler,用于标示这一路混流,该值用于改变、移除混流等
-
removeMixVideo
public void removeMixVideo(int handler)
移除已添加的一路视频混流- Parameters:
handler
- 已有混流的videoHandler值
-
inputMixTexture
public void inputMixTexture(int handler, int texture, int width, int height, long pts, int rotation)
输入视频混流数据- Parameters:
handler
- 已有混流的videoHandler值texture
- 视频图像纹理idwidth
- 视频图像宽度height
- 视频图像高度pts
- 视频图像pts(μs)rotation
- 视频图像旋转角度 注意:此接口不控制时序,需要调用方控制输入视频帧的时序
-
inputMixVideoPtr
public void inputMixVideoPtr(int handler, long dataptr, int width, int height, int stride, int size, long pts, int rotation)
输入视频混流数据- Parameters:
handler
- 已有混流的videoHandler值dataptr
- 视频图像native内存指针width
- 视频图像宽度height
- 视频图像高度size
- 视频图像sizepts
- 视频图像pts(μs)rotation
- 视频图像旋转角度 注意:此接口不控制时序,需要调用方控制输入视频帧的时序
-
inputMixVideoData
public void inputMixVideoData(int handler, byte[] data, int width, int height, int stride, int size, long pts, int rotation)
输入视频混流数据- Parameters:
handler
- 已有混流的videoHandler值data
- 视频图像byte arraywidth
- 视频图像宽度height
- 视频图像高度size
- 视频图像sizepts
- 视频图像pts(μs)rotation
- 视频图像旋转角度 注意:此接口不控制时序,需要调用方控制输入视频帧的时序
-
addMixAudio
public int addMixAudio(int channels, AlivcSoundFormat format, int audioSample)
添加一路音频混流,并设置相应音频格式和采样率- Parameters:
channels
- 当前音频流声道数format
- 当前音频流格式audioSample
- 当前音频流采样率- Returns:
- 返回当前音频混流audioHandler,用于标示这一路音频流,该值用于移除混流
-
removeMixAudio
public void removeMixAudio(int handler)
移除已添加的一路音频混流- Parameters:
handler
- 已有混流的audioHandler值
-
inputMixAudioPtr
public boolean inputMixAudioPtr(int handler, long dataptr, int size, long pts)
输入音频混流数据- Parameters:
handler
- 已有混流的audioHandler值dataptr
- 音频数据native内存指针size
- 音频数据sizepts
- 音频数据pts(μs) 注意:此接口不控制时序,需要调用方控制输入音频帧的时序
-
inputMixAudioData
public boolean inputMixAudioData(int handler, byte[] data, int size, long pts)
输入音频混流数据- Parameters:
handler
- 已有混流的audioHandler值data
- 音频数据 byte arraysize
- 音频数据sizepts
- 音频数据pts(μs) 注意:此接口不控制时序,需要调用方控制输入音频帧的时序
-
inputStreamVideoPtr
public void inputStreamVideoPtr(long dataptr, int width, int height, int stride, int size, long pts, int rotation)
输入自定义视频流- Specified by:
inputStreamVideoPtr
in interfaceILivePusher
- Parameters:
dataptr
- native内存指针width
- 视频图像宽度height
- 视频图像高度size
- 视频图像sizepts
- 视频图像pts(us)rotation
- 视频图像旋转角度
-
inputStreamTexture
public void inputStreamTexture(int textureId, int width, int height, int stride, long pts, int rotation, long extra)
输入自定义视频流- Parameters:
textureId
- 视频纹理idwidth
- 视频图像宽度height
- 视频图像高度pts
- 视频图像pts(us)rotation
- 视频图像旋转角度extra
- 暂无作用 注意:此接口不控制时序,需要调用方控制输入视频帧的时序
-
inputStreamVideoData
public void inputStreamVideoData(byte[] data, int width, int height, int stride, int size, long pts, int rotation)
输入自定义视频流- Specified by:
inputStreamVideoData
in interfaceILivePusher
- Parameters:
data
- 视频图像byte arraywidth
- 视频图像宽度height
- 视频图像高度size
- 视频图像sizepts
- 视频图像pts(us)rotation
- 视频图像旋转角度
-
inputStreamAudioPtr
public void inputStreamAudioPtr(long dataPtr, int size, int sampleRate, int channels, long pts)
输入自定义音频数据- Specified by:
inputStreamAudioPtr
in interfaceILivePusher
- Parameters:
dataPtr
- 音频数据native内存指针size
-pts
- 音频数据pts(US)
-
inputStreamAudioData
public void inputStreamAudioData(byte[] data, int size, int sampleRate, int channels, long pts)
输入自定义音频数据- Specified by:
inputStreamAudioData
in interfaceILivePusher
- Parameters:
data
- 音频数据 byte arraysize
-pts
- 音频数据pts(US)
-
addDynamicsAddons
public int addDynamicsAddons(java.lang.String path, float x, float y, float w, float h) throws java.lang.IllegalArgumentException
添加动态贴纸- Specified by:
addDynamicsAddons
in interfaceILivePusher
- Parameters:
path
- 贴纸路径,带config.jsonx
- 显示起始x位置(0~1.0f)y
- 显示起始y位置(0~1.0f)w
- 显示宽度(0~1.0f)h
- 显示高度(0~1.0f)- Returns:
- id 贴纸id
- Throws:
java.lang.IllegalArgumentException
-
removeDynamicsAddons
public void removeDynamicsAddons(int id)
删除动态贴纸- Specified by:
removeDynamicsAddons
in interfaceILivePusher
- Parameters:
id
- 贴纸id
-
setMainStreamPosition
public void setMainStreamPosition(float startX, float startY, float w, float h)
-
-