com.aliyun.svideosdk.editor

## Class EditorCallBack

- java.lang.Object
- - com.aliyun.svideosdk.editor.EditorCallBack

-     public abstract class EditorCallBack
      extends java.lang.Object

  请不要在回调线程里面调用sdk的任何方法，会引起线程锁死

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `boolean` | `mNeedPacketCallback` v3.32.0 新增 是否需要回调合成包数据
    `int` | `mNeedRenderCallback` 纹理回调开关设置 可以使用"|"符号来开启多个回调，如：RENDER_CALLBACK_CUSTOM | RENDER_CALLBACK_TEXTURE,代表同时开启两个回调
    `static int` | `RENDER_CALLBACK_CUSTOM` 使用sdk渲染前的纹理回调
    `static int` | `RENDER_CALLBACK_NONE` 不使用任何回调
    `static int` | `RENDER_CALLBACK_TEXTURE` 使用sdk渲染后的纹理回调

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EditorCallBack()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract int` | `onCustomRender(int srcTextureID, int width, int height, long frameTime)` 没有经过sdk渲染引擎渲染的视频纹理id回调
    `abstract void` | `onDataReady()` 播放数据准备完成回调
    `abstract void` | `onEnd(int state)` 结束回调
    `abstract void` | `onError(int rv)` 错误回调
    `void` | `onPacketSeek(long offset, int whence)` v3.32.0 新增 合成包seek回调
    `abstract void` | `onPlayProgress(long currentPlayTime, long currentStreamPlayTime)` 播放进度回调，回调播放时间戳，假如10s的视频，慢放变成15s，则播放到15s时，currentPlayTime=15s, currentStreamPlayTime=10s
    `void` | `onPlayStateChanged(boolean isPlaying)` v3.33.0 新增 播放状态回调(播放模式)
    `void` | `onRenderDestroy()` 渲染环境销毁回调，在渲染线程中回调
    `void` | `onRenderSetup()` 渲染环境初始化回调，在渲染线程中回调
    `abstract int` | `onTextureRender(int srcTextureID, int width, int height, long frameTime)` 经过sdk渲染引擎渲染的视频纹理id回调
    `void` | `onWritePacket(java.nio.ByteBuffer buffer, int bufferSize)` v3.32.0 新增 合成包数据回调

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### RENDER_CALLBACK_NONE

          public static final int RENDER_CALLBACK_NONE

      不使用任何回调
      See Also:
        Constant Field Values

    - #### RENDER_CALLBACK_CUSTOM

          public static final int RENDER_CALLBACK_CUSTOM

      使用sdk渲染前的纹理回调
      See Also:
        Constant Field Values

    - #### RENDER_CALLBACK_TEXTURE

          public static final int RENDER_CALLBACK_TEXTURE

      使用sdk渲染后的纹理回调
      See Also:
        Constant Field Values

    - #### mNeedRenderCallback

          public int mNeedRenderCallback

      纹理回调开关设置 可以使用"|"符号来开启多个回调，如：RENDER_CALLBACK_CUSTOM | RENDER_CALLBACK_TEXTURE,代表同时开启两个回调

    - #### mNeedPacketCallback

          public boolean mNeedPacketCallback

      v3.32.0 新增 是否需要回调合成包数据

  - ### Constructor Detail

    - #### EditorCallBack

          public EditorCallBack()

  - ### Method Detail

    - #### onEnd

          public abstract void onEnd(int state)

      结束回调
      Parameters:
        `state` - 播放还是导出视频，0播放 1导出

    - #### onError

          public abstract void onError(int rv)

      错误回调
      Parameters:
        `rv` - 回调错误码 VideoPool:(该模块错误码在onError中) 状态错误 `AliyunErrorCode.ALIVC_FRAMEWORK_MEDIA_POOL_WRONG_STATE` DEMUXER重复创建 `AliyunErrorCode.ALIVC_FRAMEWORK_DEMUXER_INIT_MULTI_TIMES` DEMUXER打开失败 `AliyunErrorCode.ALIVC_FRAMEWORK_DEMUXER_OPEN_FILE_FAILED` DEMUXER获取流信息失败 `AliyunErrorCode.ALIVC_FRAMEWORK_DEMUXER_FIND_STREAM_INFO_FAILED` 解码器创建失败 `AliyunErrorCode.ALIVC_FRAMEWORK_VIDEO_DECODER_CREATE_DECODER_FAILED` 解码器状态错误 `AliyunErrorCode.ALIVC_FRAMEWORK_VIDEO_DECODER_ERROR_STATE` 解码器输入错误 `AliyunErrorCode.ALIVC_FRAMEWORK_VIDEO_DECODER_ERROR_INPUT` 解码器参数SPSPPS为空 `AliyunErrorCode.ALIVC_FRAMEWORK_VIDEO_DECODER_SPS_PPS_NULL` 解码H264参数创建失败 `AliyunErrorCode.ALIVC_FRAMEWORK_VIDEO_DECODER_CREATE_H264_PARAM_SET_FAILED` 解码HEVC参数创建失败 `AliyunErrorCode.ALIVC_FRAMEWORK_VIDEO_DECODER_CREATE_HEVC_PARAM_SET_FAILED` 解码内存缓存满了 `AliyunErrorCode.ALIVC_FRAMEWORK_MEDIA_POOL_CACHE_DATA_SIZE_OVERFLOW` AudioPool:(该模块错误码在onError中) 状态错误 `AliyunErrorCode.ALIVC_FRAMEWORK_MEDIA_POOL_WRONG_STATE` DEMUXER重复创建 `AliyunErrorCode.ALIVC_FRAMEWORK_DEMUXER_INIT_MULTI_TIMES` DEMUXER打开失败 `AliyunErrorCode.ALIVC_FRAMEWORK_DEMUXER_OPEN_FILE_FAILED` DEMUXER获取流信息失败 `AliyunErrorCode.ALIVC_FRAMEWORK_DEMUXER_FIND_STREAM_INFO_FAILED` 解码器创建失败 `AliyunErrorCode.ALIVC_FRAMEWORK_AUDIO_DECODER_CREATE_DECODER_FAILED` 解码器状态错误 `AliyunErrorCode.ALIVC_FRAMEWORK_AUDIO_DECODER_ERROR_STATE` 解码器输入错误 `AliyunErrorCode.ALIVC_FRAMEWORK_AUDIO_DECODER_ERROR_INPUT`

    - #### onRenderSetup

          public void onRenderSetup()

      渲染环境初始化回调，在渲染线程中回调

    - #### onRenderDestroy

          public void onRenderDestroy()

      渲染环境销毁回调，在渲染线程中回调

    - #### onCustomRender

          public abstract int onCustomRender(int srcTextureID,
                                             int width,
                                             int height,
                                             long frameTime)

      没有经过sdk渲染引擎渲染的视频纹理id回调
      Parameters:
        `srcTextureID` - 原纹理ID
        `width` - 纹理宽
        `height` - 纹理高
        `frameTime` - 帧相对于时间轴的渲染时间(单位: 微秒)
      Returns:
        经过绘制后的新纹理ID

    - #### onTextureRender

          public abstract int onTextureRender(int srcTextureID,
                                              int width,
                                              int height,
                                              long frameTime)

      经过sdk渲染引擎渲染的视频纹理id回调
      Parameters:
        `srcTextureID` - 原纹理ID
        `width` - 纹理宽
        `height` - 纹理高
        `frameTime` - 帧相对于时间轴的渲染时间(单位: 微秒)
      Returns:
        经过绘制后的新纹理ID

    - #### onPlayProgress

          public abstract void onPlayProgress(long currentPlayTime,
                                              long currentStreamPlayTime)

      播放进度回调，回调播放时间戳，假如10s的视频，慢放变成15s，则播放到15s时，currentPlayTime=15s, currentStreamPlayTime=10s
      Parameters:
        `currentPlayTime` - 绝播放时间
        `currentStreamPlayTime` - 当前流的播放时间

    - #### onDataReady

          public abstract void onDataReady()

      播放数据准备完成回调

    - #### onPlayStateChanged

          public void onPlayStateChanged(boolean isPlaying)

      v3.33.0 新增 播放状态回调(播放模式)
      Parameters:
        `isPlaying` - 是否在播放

    - #### onWritePacket

          public void onWritePacket(java.nio.ByteBuffer buffer,
                                    int bufferSize)

      v3.32.0 新增 合成包数据回调
      Parameters:
        `buffer` - 数据
        `bufferSize` - 数据大小

    - #### onPacketSeek

          public void onPacketSeek(long offset,
                                   int whence)

      v3.32.0 新增 合成包seek回调
      Parameters:
        `offset` - 偏移
        `whence` - 偏移模式