Class AlivcLivePusher

  • All Implemented Interfaces:
    ILivePusher

    public class AlivcLivePusher
    extends java.lang.Object
    implements ILivePusher
    通过AlivcLivePusher类可以完成音视频的采集推流。

    关于AlivcLivePusher的主题有:

    1. 状态图
    2. 方法调用状态要求
    3. 权限
    4. 通知监听器
    5. 网络监听器
    6. 错误监听器
    7. 暂停和恢复
    8. 同步和异步
    9. 异常处理

    一、状态图

    音视频推流的控制按照状态机进行管理。下面的状态图展示了一个AlivcLivePusher对象在使用过程中的完整的生命周期和状态变化。

    AlivcLivePusher State diagram

    AlivcLivePusher Error State diagram

    二、方法调用的状态要求

    方法名

    有效状态

    无效状态

    备注

    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的过程中,有以下几个接口由于涉及到硬解和网络,导致接口调用时间消耗可能会较长,因此我们同时也提供了异步接口。此外,我们还提供了一个异步的重连接口方便来处理网络错误。

    1. startPreview/startPreviewAsync
    2. startPush/startPushAsync
    3. restartPush/restartPushAsync
    4. resume/resumeAsync
    5. reconnectAsync

    九、异常

    在调用接口的时候,有的接口会抛出 IllegalArgumentException 和 IllegalStateException

    1. IllegalArgumentException 表示调用的api的输入参数不合法
    2. IllegalStateException 表示调用api时的状态不对
    • Constructor Detail

      • AlivcLivePusher

        public AlivcLivePusher()
    • Method Detail

      • init

        public void init​(android.content.Context context,
                         AlivcLivePushConfig config)
                  throws java.lang.IllegalArgumentException,
                         java.lang.IllegalStateException
        初始化推流参数
        Specified by:
        init in interface ILivePusher
        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 interface ILivePusher
        Parameters:
        customVideoDetect - 回调接口
      • setCustomFilter

        public void setCustomFilter​(com.alivc.component.custom.AlivcLivePushCustomFilter customVideoFilter)
        设置用户自定义视频美颜回调
        Specified by:
        setCustomFilter in interface ILivePusher
        Parameters:
        customVideoFilter - 回调接口
      • setCustomAudioFilter

        public void setCustomAudioFilter​(com.alivc.component.custom.AlivcLivePushCustomAudioFilter customAudioFilter)
        设置用户自定义音频处理回调
        Specified by:
        setCustomAudioFilter in interface ILivePusher
        Parameters:
        customAudioFilter - 回调接口
      • destroy

        public void destroy()
                     throws java.lang.IllegalStateException
        释放推流
        Specified by:
        destroy in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化
      • startPreview

        public void startPreview​(android.view.SurfaceView surfaceView)
                          throws java.lang.IllegalArgumentException,
                                 java.lang.IllegalStateException
        开始预览
        Specified by:
        startPreview in interface ILivePusher
        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 interface ILivePusher
        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 interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview
      • startPush

        public void startPush​(java.lang.String url)
                       throws java.lang.IllegalArgumentException,
                              java.lang.IllegalStateException
        开始推流
        Specified by:
        startPush in interface ILivePusher
        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 interface ILivePusher
        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 interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/已经stopPush
      • restartPushAync

        public void restartPushAync()
                             throws java.lang.IllegalStateException
        重新开始推流
        Specified by:
        restartPushAync in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/已经stopPush
      • reconnectPushAsync

        public void reconnectPushAsync​(java.lang.String url)
                                throws java.lang.IllegalStateException
        重新连接进行推流
        Specified by:
        reconnectPushAsync in interface ILivePusher
        Throws:
        java.lang.IllegalStateException
      • stopPush

        public void stopPush()
                      throws java.lang.IllegalStateException
        结束推流
        Specified by:
        stopPush in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/已经stopPush
      • pause

        public void pause()
                   throws java.lang.IllegalStateException
        暂停推流
        Specified by:
        pause in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/已经pause
      • resume

        public void resume()
                    throws java.lang.IllegalStateException
        恢复推流
        Specified by:
        resume in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/未pause/已resume
      • resumeAsync

        public void resumeAsync()
                         throws java.lang.IllegalStateException
        异步恢复推流
        Specified by:
        resumeAsync in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/未pause/已resume
      • pauseScreenCapture

        public void pauseScreenCapture()
                                throws java.lang.IllegalStateException
        暂停推流
        Specified by:
        pauseScreenCapture in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/已经pause
      • resumeScreenCapture

        public void resumeScreenCapture()
                                 throws java.lang.IllegalStateException
        恢复推流
        Specified by:
        resumeScreenCapture in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush/未pause/已resume
      • switchCamera

        public void switchCamera()
                          throws java.lang.IllegalStateException
        切换摄像头
        Specified by:
        switchCamera in interface ILivePusher
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview
      • setAutoFocus

        public void setAutoFocus​(boolean autoFocus)
                          throws java.lang.IllegalStateException
        设置自动对焦
        Specified by:
        setAutoFocus in interface ILivePusher
        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 interface ILivePusher
        Parameters:
        x - 对焦的点x坐标
        y - 对焦的点y坐标y
        autoFocus - 是否自动聚焦
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview
      • setExposure

        public void setExposure​(int exposure)
        设置采集曝光
        Specified by:
        setExposure in interface ILivePusher
      • setZoom

        public void setZoom​(int zoom)
                     throws java.lang.IllegalStateException
        设置缩放[0,getMaxZoom()]
        Specified by:
        setZoom in interface ILivePusher
        Parameters:
        zoom - 0~getMaxZoom()
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview
      • getMaxZoom

        public int getMaxZoom()
                       throws java.lang.IllegalStateException
        获取摄像头支持的最大缩放值, 0 : 不支持缩放 大于0 : 最大缩放值
        Specified by:
        getMaxZoom in interface ILivePusher
        Returns:
        最大zoom值
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview
      • getCurrentZoom

        public int getCurrentZoom()
                           throws java.lang.IllegalStateException
        获取当前缩放值
        Specified by:
        getCurrentZoom in interface ILivePusher
        Returns:
        当前缩放值
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview
      • setMute

        public void setMute​(boolean mute)
                     throws java.lang.IllegalStateException
        是否静音
        Specified by:
        setMute in interface ILivePusher
        Parameters:
        mute - true:静音推流 false:正常推流
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush
      • setFlash

        public void setFlash​(boolean flash)
                      throws java.lang.IllegalStateException
        是否打开闪光灯
        Specified by:
        setFlash in interface ILivePusher
        Parameters:
        flash - true:打开闪光灯 false:关闭闪光灯
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview
      • setPushMirror

        public void setPushMirror​(boolean mirror)
                           throws java.lang.IllegalStateException
        推流端是否水平镜像
        Specified by:
        setPushMirror in interface ILivePusher
        Parameters:
        mirror - true:打开推流镜像 false:关闭推流镜像
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush
      • setPreviewMirror

        public void setPreviewMirror​(boolean mirror)
                              throws java.lang.IllegalStateException
        预览镜像开关
        Specified by:
        setPreviewMirror in interface ILivePusher
        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 interface ILivePusher
        Parameters:
        targetVideoBitrate - 目标视频编码码率
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush
        java.lang.IllegalArgumentException
      • setMinVideoBitrate

        public void setMinVideoBitrate​(int minVideoBitrate)
                                throws java.lang.IllegalArgumentException,
                                       java.lang.IllegalStateException
        设置最小视频码率[100,5000] (Kbps)
        Specified by:
        setMinVideoBitrate in interface ILivePusher
        Parameters:
        minVideoBitrate - 最小视频编码码率
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush
        java.lang.IllegalArgumentException
      • isCameraSupportAutoFocus

        public boolean isCameraSupportAutoFocus()
        获取是否支持自动对焦
        Specified by:
        isCameraSupportAutoFocus in interface ILivePusher
        Returns:
        是否支持自动对焦
      • isCameraSupportFlash

        public boolean isCameraSupportFlash()
        获取是否支持闪光灯
        Specified by:
        isCameraSupportFlash in interface ILivePusher
        Returns:
        是否支持闪光灯
      • isPushing

        public boolean isPushing()
                          throws java.lang.IllegalStateException
        SDK是否正在推流
        Specified by:
        isPushing in interface ILivePusher
        Returns:
        true:正在推流 false:未推流
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush
      • snapshot

        public void snapshot​(int count,
                             int interval,
                             AlivcSnapshotListener listener)
        视频流截图
        Specified by:
        snapshot in interface ILivePusher
        Parameters:
        count - 截取图片的个数
        interval - 每张图片的间隔
        listener - 接口回调
      • isNetworkPushing

        public boolean isNetworkPushing()
                                 throws java.lang.IllegalStateException
        网络是否正在推流
        Specified by:
        isNetworkPushing in interface ILivePusher
        Returns:
        true:正在推流 false:未推流
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush
      • getLivePushStatsInfo

        public AlivcLivePushStatsInfo getLivePushStatsInfo()
                                                    throws java.lang.IllegalStateException
        获取推流统计数据
        Specified by:
        getLivePushStatsInfo in interface ILivePusher
        Returns:
        推流统计数据
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化
      • getPushUrl

        public java.lang.String getPushUrl()
                                    throws java.lang.IllegalStateException
        获取推流URL
        Specified by:
        getPushUrl in interface ILivePusher
        Returns:
        推流URL
        Throws:
        java.lang.IllegalStateException - 如果状态不对,例如还未初始化/未startPreview/未startPush
      • 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 interface ILivePusher
        Parameters:
        path - 背景音乐路径
        Throws:
        java.lang.IllegalStateException
      • stopBGMAsync

        public void stopBGMAsync()
                          throws java.lang.IllegalStateException
        停止播放背景音乐
        Specified by:
        stopBGMAsync in interface ILivePusher
        Throws:
        java.lang.IllegalStateException
      • pauseBGM

        public void pauseBGM()
                      throws java.lang.IllegalStateException
        暂停播放背景音乐
        Specified by:
        pauseBGM in interface ILivePusher
        Throws:
        java.lang.IllegalStateException
      • resumeBGM

        public void resumeBGM()
                       throws java.lang.IllegalStateException
        恢复播放背景音乐
        Specified by:
        resumeBGM in interface ILivePusher
        Throws:
        java.lang.IllegalStateException
      • setBGMLoop

        public void setBGMLoop​(boolean isLoop)
                        throws java.lang.IllegalStateException
        设置背景音乐是否循环播放
        Specified by:
        setBGMLoop in interface ILivePusher
        Parameters:
        isLoop - 是否循环 true:循环 false:不循环
        Throws:
        java.lang.IllegalStateException
      • setBGMEarsBack

        public void setBGMEarsBack​(boolean isOpen)
                            throws java.lang.IllegalStateException
        设置耳返开关
        Specified by:
        setBGMEarsBack in interface ILivePusher
        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 interface ILivePusher
        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 interface ILivePusher
        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 interface ILivePusher
        Parameters:
        on - true:开启 false:关闭
        Throws:
        java.lang.IllegalStateException
      • setQualityMode

        public void setQualityMode​(AlivcQualityModeEnum mode)
                            throws java.lang.IllegalStateException
        设置视频质量模式
        Specified by:
        setQualityMode in interface ILivePusher
        Parameters:
        mode - 视频质量模式
        Throws:
        java.lang.IllegalStateException
      • setPreviewMode

        public void setPreviewMode​(AlivcPreviewDisplayMode mode)
                            throws java.lang.IllegalStateException
        设置预览显示模式
        Specified by:
        setPreviewMode in interface ILivePusher
        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 interface ILivePusher
        Parameters:
        path - 水印图片
        x - 水印左上角x轴位置 相对位置 0~1
        y - 水印右上角y轴位置 相对位置 0~1
        width - 水印显示宽度 相对位置 0~1
      • setWatermarkVisible

        public void setWatermarkVisible​(boolean visible)
        设置水印可见
        Specified by:
        setWatermarkVisible in interface ILivePusher
        Parameters:
        visible - 是否可见
      • startCamera

        public int startCamera​(android.view.SurfaceView surfaceView)
                        throws java.lang.IllegalStateException
        录屏模式下,开启摄像头预览 如果不需要预览,则surfaceview填为null
        Specified by:
        startCamera in interface ILivePusher
        Parameters:
        surfaceView - surfaceView
        Returns:
        Throws:
        java.lang.IllegalStateException
      • setScreenOrientation

        public void setScreenOrientation​(int orientation)
        录屏模式下,设置感应的屏幕旋转角度
        Specified by:
        setScreenOrientation in interface ILivePusher
        Parameters:
        orientation - 旋转角度
      • stopCamera

        public void stopCamera()
        录屏模式下,关闭摄像头预览
        Specified by:
        stopCamera in interface ILivePusher
      • startCameraMix

        public int startCameraMix​(float x,
                                  float y,
                                  float w,
                                  float h)
        录屏模式下,开启摄像头混流
        Specified by:
        startCameraMix in interface ILivePusher
        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 interface ILivePusher
      • 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 - 当前混流起始位置X
        displayY - 当前混流起始位置Y
        displayW - 当前混流显示区域Width
        displayH - 当前混流显示区域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 - 视频图像纹理id
        width - 视频图像宽度
        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 - 视频图像size
        pts - 视频图像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 array
        width - 视频图像宽度
        height - 视频图像高度
        size - 视频图像size
        pts - 视频图像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 - 音频数据size
        pts - 音频数据pts(μs) 注意:此接口不控制时序,需要调用方控制输入音频帧的时序
      • inputMixAudioData

        public boolean inputMixAudioData​(int handler,
                                         byte[] data,
                                         int size,
                                         long pts)
        输入音频混流数据
        Parameters:
        handler - 已有混流的audioHandler值
        data - 音频数据 byte array
        size - 音频数据size
        pts - 音频数据pts(μs) 注意:此接口不控制时序,需要调用方控制输入音频帧的时序
      • inputStreamVideoPtr

        public void inputStreamVideoPtr​(long dataptr,
                                        int width,
                                        int height,
                                        int stride,
                                        int size,
                                        long pts,
                                        int rotation)
        输入自定义视频流
        Specified by:
        inputStreamVideoPtr in interface ILivePusher
        Parameters:
        dataptr - native内存指针
        width - 视频图像宽度
        height - 视频图像高度
        size - 视频图像size
        pts - 视频图像pts(us)
        rotation - 视频图像旋转角度
      • inputStreamTexture

        public void inputStreamTexture​(int textureId,
                                       int width,
                                       int height,
                                       int stride,
                                       long pts,
                                       int rotation,
                                       long extra)
        输入自定义视频流
        Parameters:
        textureId - 视频纹理id
        width - 视频图像宽度
        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 interface ILivePusher
        Parameters:
        data - 视频图像byte array
        width - 视频图像宽度
        height - 视频图像高度
        size - 视频图像size
        pts - 视频图像pts(us)
        rotation - 视频图像旋转角度
      • inputStreamAudioPtr

        public void inputStreamAudioPtr​(long dataPtr,
                                        int size,
                                        int sampleRate,
                                        int channels,
                                        long pts)
        输入自定义音频数据
        Specified by:
        inputStreamAudioPtr in interface ILivePusher
        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 interface ILivePusher
        Parameters:
        data - 音频数据 byte array
        size -
        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 interface ILivePusher
        Parameters:
        path - 贴纸路径,带config.json
        x - 显示起始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 interface ILivePusher
        Parameters:
        id - 贴纸id
      • setMainStreamPosition

        public void setMainStreamPosition​(float startX,
                                          float startY,
                                          float w,
                                          float h)