com.qihoo.videocloud

## Class QHVCPlayer

- java.lang.Object
- - com.qihoo.videocloud.QHVCPlayer

- All Implemented Interfaces:
    com.qihoo.livecloud.play.callback.PlayerCallback, IQHVCPlayer, IQHVCPlayerAdvanced

      public class QHVCPlayer
      extends java.lang.Object
      implements IQHVCPlayerAdvanced, com.qihoo.livecloud.play.callback.PlayerCallback

  Created by guohailiang on 2017/5/10.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `QHVCPlayer.P2pTaskInfo`
    `static class` | `QHVCPlayer.PlayerMsg`

    - ### Nested classes/interfaces inherited from interface com.qihoo.videocloud.IQHVCPlayerAdvanced

      `IQHVCPlayerAdvanced.DecodeMode, IQHVCPlayerAdvanced.OnAudioPCMListener, IQHVCPlayerAdvanced.OnAudioVolumeListener, IQHVCPlayerAdvanced.OnCustomizeSeiMetaListener, IQHVCPlayerAdvanced.OnPacketListener, IQHVCPlayerAdvanced.OnPlayerNetStatsListener, IQHVCPlayerAdvanced.OnRecordListener, IQHVCPlayerAdvanced.OnSeiMetaListener, IQHVCPlayerAdvanced.OnUserDefinedDataListener, IQHVCPlayerAdvanced.OptionKey, IQHVCPlayerAdvanced.PlayMode, IQHVCPlayerAdvanced.QHVCDecryptType, IQHVCPlayerAdvanced.QHVCPacketType, IQHVCPlayerAdvanced.QHVCSnapshotListener, IQHVCPlayerAdvanced.QHVCSwitchResolutionError, IQHVCPlayerAdvanced.QHVCSwitchResolutionListener, IQHVCPlayerAdvanced.RecorderFormat, IQHVCPlayerAdvanced.RenderMode, IQHVCPlayerAdvanced.StopReason, IQHVCPlayerAdvanced.SurfaceRenderListener`

    - ### Nested classes/interfaces inherited from interface com.qihoo.videocloud.IQHVCPlayer

      `IQHVCPlayer.Error, IQHVCPlayer.ErrorExtra, IQHVCPlayer.Info, IQHVCPlayer.InfoExtra, IQHVCPlayer.MediaInfoKey, IQHVCPlayer.OnBufferingEventListener, IQHVCPlayer.OnBufferingUpdateListener, IQHVCPlayer.OnCompletionListener, IQHVCPlayer.OnErrorListener, IQHVCPlayer.OnInfoListener, IQHVCPlayer.OnPreparedListener, IQHVCPlayer.onProgressChangeListener, IQHVCPlayer.OnSeekCompleteListener, IQHVCPlayer.OnVideoSizeChangedListener, IQHVCPlayer.PlayType`

    - ### Nested classes/interfaces inherited from interface com.qihoo.livecloud.play.callback.PlayerCallback

      `com.qihoo.livecloud.play.callback.PlayerCallback.HWDecodeError`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `FILTER_MODE_CLOUD`
    `static int` | `FILTER_MODE_USER`
    `static float` | `FLOAT_EPSINON`
    `static java.lang.String` | `KEY_STATS_SWITCH_FAILED_REASON_INT`
    `static float` | `PLAYBACK_RATE_DEFAULT`
    `static java.lang.String` | `SESSION_ID_SUFFIX_HEVC_FAILED`
    `static java.lang.String` | `SESSION_ID_SUFFIX_HW_FAILED`
    `static java.lang.String` | `SESSION_ID_SUFFIX_SWITCH`
    `static int` | `SWI_ERR_CLOSE_BY_USER`
    `static int` | `SWI_ERR_INVALID_PARAM`
    `static int` | `SWI_ERR_OPEN_TIMEOUT`
    `static int` | `SWI_ERR_OTHER`
    `static int` | `SWI_ERR_PAUSE`
    `static int` | `SWI_ERR_PLAYBACK_RATE`
    `static int` | `SWI_ERR_SECOND_PLAYER_OPEN_FAILED`
    `static int` | `SWI_ERR_SEEK`
    `static int` | `SWI_ERR_STOP`

    - ### Fields inherited from interface com.qihoo.videocloud.IQHVCPlayerAdvanced

      `KEY_OPTION_DECODE_MODE, KEY_OPTION_DECRYPT_KEY, KEY_OPTION_DECRYPT_TYPE, KEY_OPTION_ENABLE_ANALYZE_SEI, KEY_OPTION_FORCE_P2P, KEY_OPTION_HLS_REFERER, KEY_OPTION_MAX_ANALYZE_DURATION, KEY_OPTION_MUTE, KEY_OPTION_PLAY_MODE, KEY_OPTION_POSITION, KEY_OPTION_POSITION_ACCURATE, KEY_OPTION_PREVIEW_DURATION, KEY_OPTION_RENDER_MODE, KEY_OPTION_SCHEDULE_ENCODE_TYPE, KEY_OPTION_SCHEDULE_URL, KEY_OPTION_SESSION_ID, KEY_OPTION_SRC_OUTSIDE, KEY_OPTION_STREAM_TYPE, KEY_OPTION_TRANSPORT_PROTOCOL, LIVECLOUD_SMART_DECODE_MODE, LIVECLOUD_SOFT_DECODE_MODE, PLAY_ERROR, PLAY_INCOMING_CALL, PLAY_OTHER, PLAY_OVER, PLAYER_CLASS_NAME, PLAYMODE_FLUENCY, PLAYMODE_LIVE_IOT, PLAYMODE_LOWLATENCY, QHVC_DECRYPT_TYPE_DISHI, QHVC_DECRYPT_TYPE_FFMPEG, QHVC_DECRYPT_TYPE_SHUIDI, QHVC_PACKET_TYPE_AAC, QHVC_PACKET_TYPE_H264, QHVC_PACKET_TYPE_H265, QHVC_PACKET_TYPE_NONE, QHVC_PACKET_TYPE_OPUS, QHVC_PACKET_TYPE_PCM_ALAW, QHVC_PACKET_TYPE_PCM_G726LE, QHVC_PACKET_TYPE_PCM_MULAW, QHVC_PACKET_TYPE_PCM_S16LE, RECORDER_FORMAT_GIF, RECORDER_FORMAT_MOV, RECORDER_FORMAT_MP4, RENDER_MODE_FULL, RENDER_MODE_IN, RENDER_MODE_OUT, USER_CLOSE`

    - ### Fields inherited from interface com.qihoo.videocloud.IQHVCPlayer

      `ERROR_EXTRA_EMPTY, ERROR_EXTRA_FORMAT_NOT_SUPPORT, ERROR_EXTRA_PLAY_CONNECT_FAILED, ERROR_EXTRA_PLAY_JPLAYER_OPEN_FAILED, ERROR_EXTRA_PLAY_OPEN_URL_FAILED, ERROR_EXTRA_PLAY_SET_SESSION_FAILED, ERROR_EXTRA_PLAY_SN_FAILED, ERROR_EXTRA_PLAY_SUBSCRIBE_FAILED, ERROR_EXTRA_PLAY_UNSUPPORT_HARDWARE_DECODE, ERROR_EXTRA_PREPARE_DISPATCH_FAILED, ERROR_EXTRA_RECORD_ERROR, ERROR_EXTRA_RECORD_FILE_ERROR, ERROR_EXTRA_UNKNOW, ERROR_FILE_NOT_OPEN, ERROR_FORMATNOTSUPPORT, ERROR_INVALID_PARAM, ERROR_IO_EXCEPTION, ERROR_NOT_SUPPORT_OPERATION, ERROR_OK, ERROR_PLAYER_PLUGIN_LOAD_FAILED, ERROR_PREPARE_FAILED, ERROR_SECURITY_EXCEPTION, ERROR_START_PLAY_FAILED, ERROR_STATE_AUTH_FAILED, ERROR_STATE_INVALID, ERROR_UNKNOW, INFO_CONNECT_INBACKGOURND, INFO_DEVICE_RENDER_ERR, INFO_DEVICE_RENDER_FIRST_FRAME, INFO_DEVICE_RENDER_QUERY_SURFACE, INFO_DEVICE_RENDER_SURFACE_CHANGE, INFO_EXTRA_EMPTY, INFO_EXTRA_H265_PLAY_FAILED, INFO_EXTRA_H265_START_PLAY, INFO_EXTRA_VIDEO_CACHE_FAILED, INFO_EXTRA_VIDEO_CACHE_SUCCESS, INFO_FILE_OPEN, INFO_LIVE_PLAY_FPS, INFO_LIVE_PLAY_SPEED, INFO_LIVE_PLAY_START, INFO_PLAY_H265, INFO_PLAYER_AV_MANAGER_INIT_SUCCESS, INFO_PLAYER_AV_NOT_SYNC, INFO_PLAYER_CLOSE, INFO_PLAYER_OPEN_SUCCESS, INFO_PLAYER_PLUGIN_DOWNLOAD_SUCCESS, INFO_PLAYER_PLUGIN_START_DOWNLOAD, INFO_RENDER_RESET_SURFACE, INFO_SEEK_FAILED, INFO_SESSION_CLOSED, INFO_VIDEO_CACHE, KEY_MEDIA_INFO_AUDIO_BITRATE_INT, KEY_MEDIA_INFO_AUDIO_CHANNEL_INT, KEY_MEDIA_INFO_AUDIO_FORMAT_STRING, KEY_MEDIA_INFO_AUDIO_SAMPLE_RATE_INT, KEY_MEDIA_INFO_BITRATE_INT, KEY_MEDIA_INFO_P2PTASK_CACHE_FINISH_BOOLEAN, KEY_MEDIA_INFO_P2PTASK_CACHE_SIZE_LONG, KEY_MEDIA_INFO_P2PTASK_CDN_DOWNLOAD_SIZE_LONG, KEY_MEDIA_INFO_P2PTASK_CDN_DOWNLOAD_SPEED_LONG, KEY_MEDIA_INFO_P2PTASK_DOWNLOAD_SPEED_LONG, KEY_MEDIA_INFO_P2PTASK_P2P_DOWNLOAD_SIZE_LONG, KEY_MEDIA_INFO_P2PTASK_P2P_DOWNLOAD_SPEED_LONG, KEY_MEDIA_INFO_P2PTASK_TOTAL_SIZE_LONG, KEY_MEDIA_INFO_REAL_URL_STRING, KEY_MEDIA_INFO_VIDEO_DECODE_PIX_FORMAT_STRING, KEY_MEDIA_INFO_VIDEO_DURATION_INT, KEY_MEDIA_INFO_VIDEO_FORMAT_STRING, KEY_MEDIA_INFO_VIDEO_FPS_INT, KEY_MEDIA_INFO_VIDEO_HEIGHT_INT, KEY_MEDIA_INFO_VIDEO_WIDTH_INT, PLAYTYPE_LIVE, PLAYTYPE_VOD`

    - ### Fields inherited from interface com.qihoo.livecloud.play.callback.PlayerCallback

      `DEVICE_RENDER_ERR, DEVICE_RENDER_FIRST_FRAME, DEVICE_RENDER_QUERY_SURFACE, DEVICE_RENDER_SURFACE_CHANGE, JPLAYER_MSG_ADD_CHANNEL, JPLAYER_MSG_AUDIO_IS_READY, JPLAYER_MSG_AUDIO_IS_SILENT, JPLAYER_MSG_BUSY, JPLAYER_MSG_CONNECT_COMPLETE, JPLAYER_MSG_CONNECT_FAILED, JPLAYER_MSG_CONNECT_INBACKGOURND, JPLAYER_MSG_DATA_USERDEFINE, JPLAYER_MSG_DVRENDER, JPLAYER_MSG_DVRENDER_RESETSURFACE, JPLAYER_MSG_ERROR_FILENOTOPEN, JPLAYER_MSG_ERROR_FORMATNOTSUPPORT, JPLAYER_MSG_FAILED_HEVCPLAYBACK, JPLAYER_MSG_FILE_OPEN, JPLAYER_MSG_FILE_PROPERTY_ROTATE, JPLAYER_MSG_HW_DECODER_IS_NOT_SUPPORT, JPLAYER_MSG_MAIN_SCHEDULE_HANDLE, JPLAYER_MSG_NO_INIT_FAIL, JPLAYER_MSG_NORMAL, JPLAYER_MSG_RECORD_ENDSTREAM, JPLAYER_MSG_RECORD_ERROR, JPLAYER_MSG_RECORD_INVALID_FILE, JPLAYER_MSG_RECORD_SUCCUSS, JPLAYER_MSG_RECORD_TIMER, JPLAYER_MSG_SESSION_CLOSED, JPLAYER_MSG_SESSION_CONNECTED, JPLAYER_MSG_START_CHANNEL_FAILED, JPLAYER_MSG_START_CHANNEL_OK, JPLAYER_MSG_START_SUCCESS, JPLAYER_MSG_STARTBUFFERING, JPLAYER_MSG_STATUS_SEEK, JPLAYER_MSG_STATUS_UPDATE, JPLAYER_MSG_STOPBUFFERING, JPLAYER_MSG_SUBSCRIBE_FAILED, JPLAYER_MSG_VIDEO_IS_READY, JPLAYER_MSG_VIDEO_RESOLUTION, JPLAYER_MSG_VIDEO_SAR, JPLAYER_MSG_VIDEO_SIZE_CHANGE, JPLAYER_MSG_VIDEOCACHE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `QHVCPlayer(Context context)` 使用插件化功能时，请使用`QHVCPlayerBuilder.getPlayer(Context)`创建播放器实例

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addToGroup(int group)` 多个播放器设为一组（数据流同步场景）
    `int` | `disableRender(boolean isDisableRender)` 设置播放器是否渲染图像
    `int` | `getCurrentPosition()` 获取当前已播放时间，单位：ms(毫秒) 注： 只支持点播（回看）
    `long` | `getCurrentStreamTime()` 获取主播直播流的流时间
    `int` | `getDecoderMode()` 获取当前使用的解码模式
    `int` | `getDuration()` 获取视频文件总时长，单位：ms(毫秒) 注： 只支持点播（回看）
    `java.lang.String` | `getHwDecoderName()`
    `long` | `getLiveCurrentTimestamp()` 获取当前帧时间戳 单位：ms(毫秒) 注: 目前只支持rtsp
    `java.util.Map<java.lang.String,java.lang.Object>` | `getMediaInformation()` 获取视频信息
    `static java.lang.String` | `getNativeVersion()` 获取 Native版本号
    `long` | `getPlayerId()`
    `int` | `getPropertyRotate()` 获取视频的旋转属性
    `boolean` | `getRecordingState()` 是否是录制状态
    `int` | `getRenderMode()` 获取渲染模式
    `static java.lang.String` | `getVersion()` 获取版本号
    `float` | `getVolume()` 获取播放器当前音量
    `static boolean` | `isDefaultPlayBackRate(float playbackRate)`
    `boolean` | `isEnableAnalyzeSei()`
    `boolean` | `isMute()` 是否是静音状态
    `boolean` | `isPaused()` 视频是否处于暂停状态
    `boolean` | `isPlaying()` 是否正在播放
    `boolean` | `isSystemMediaPlayer()` 是否是系统播放器
    `boolean` | `isUseHdRedord(int width, int height)` 是否开启硬编
    `void` | `onCustomizeSeiMeta(long playerId, byte[] uuid, byte[] data)` 用户自定义SEI META
    `void` | `onMessage(long playerId, int id, int type, int flags, int size, long data, long time)`
    `long` | `onPacketCallBack(long playerId, long context, long packet)` 音频/视频数据回调
    `void` | `onPlayerMsg(long playerId, int command, long para1, long para2, int user)` 底层(C层)播放消息回调
    `void` | `onPlayerMsgHandle(long playerId, int command, long para1, long para2, int user)` 底层(C层)播放消息回调
    `void` | `onSeiMeta(long plyerId, long type, java.lang.String data, int user)` ser meta
    `void` | `onUpdateGPPlayState(long playerId, long nowTime, long videoBufferTime, long audioBufferTime)` onUpdateGPPlayState
    `void` | `onUpdateStatus(long playerId, int vbps, int abps, int vfps, int afps, int fps, int bitrate, int param1, int param2, int user)` 底层(C层)码流回调
    `void` | `onUserDefineData(long playerId, byte[] data, int length)` 用户自定义数据回调
    `int` | `pause()` 暂停播放
    `void` | `pauseRecord()`
    `static void` | `preLoad()` 预加载so
    `int` | `prepareAsync()` 准备播放，异步方法 注： 调用此方法开始走调度流程。
    `void` | `release()` 播放器资源回收
    `void` | `resumerRecord()`
    `int` | `seekTo(int millis)` 目标时间点,单位：ms(毫秒) 目前只支持回看拖动
    `int` | `seekTo(int millis, boolean accurate)` 精确seekTo
    `int` | `setDataSource(int playType, java.lang.String[] rids, java.lang.String[] sources, int defaultIndex, java.lang.String channelId, java.lang.String sign, java.util.Map<java.lang.String,java.lang.Object> options)` 设置视频源 (用于传多个不同分辨率源，自适应分辨率.
    `int` | `setDataSource(int playType, java.lang.String url, java.lang.String channelId)` 设置视频源
    `int` | `setDataSource(int playType, java.lang.String url, java.lang.String channelId, java.util.Map<java.lang.String,java.lang.Object> options)` 设置视频源
    `int` | `setDataSource(int playType, java.lang.String sn, java.lang.String channelId, java.lang.String sign, java.util.Map<java.lang.String,java.lang.Object> options)` 设置视频源
    `void` | `setDisplay(com.qihoo.livecloud.play.callback.ILiveCloudDisplay display)` 设置播放器显示View
    `void` | `setFilterValues(float brightness, float contrast, float saturation)` 设置视频画质增强filter属性
    `int` | `setMute(boolean mute)` 设置是否静音播放
    `void` | `setOnAudioPCMListener(IQHVCPlayerAdvanced.OnAudioPCMListener listener)` 设置音频数据回调
    `int` | `setOnAudioVolumeListener(IQHVCPlayerAdvanced.OnAudioVolumeListener listener, long period)` 设置音量回调(只支持直播) 收到INFO_LIVE_PLAY_START后调用
    `void` | `setOnBufferingEventListener(IQHVCPlayer.OnBufferingEventListener listener)`
    `void` | `setOnBufferingUpdateListener(IQHVCPlayer.OnBufferingUpdateListener listener)` Register a callback to be invoked when the status of a network stream's buffer has changed.
    `void` | `setOnCompletionListener(IQHVCPlayer.OnCompletionListener listener)` Register a callback to be invoked when the end of a media source has been reached during playback.
    `void` | `setOnCustomizeSeiMetaListener(IQHVCPlayerAdvanced.OnCustomizeSeiMetaListener listener)` 设置自定义sei meta回调 注意需要设置: `#setDataSource( int, String, String, String, Map options)` 设置options.put(IQHVCPlayerAdvanced.KEY_OPTION_ENABLE_ANALYZE_SEI, Boolean.TRUE)
    `void` | `setOnErrorListener(IQHVCPlayer.OnErrorListener listener)` Register a callback to be invoked when an error has happened during an asynchronous operation.
    `void` | `setOnInfoListener(IQHVCPlayer.OnInfoListener listener)` Register a callback to be invoked when an info/warning is available.
    `void` | `setOnPacketListener(IQHVCPlayerAdvanced.OnPacketListener listener)` 设置音频/视频数据回调
    `void` | `setOnPlayerNetStatsListener(IQHVCPlayerAdvanced.OnPlayerNetStatsListener listener)` 流量统计信息回调(暂时只支持直播)
    `void` | `setOnPreparedListener(IQHVCPlayer.OnPreparedListener listener)` Register a callback to be invoked when the media source is ready for playback.
    `void` | `setOnProgressChangeListener(IQHVCPlayer.onProgressChangeListener listener)`
    `void` | `setOnSeekCompleteListener(IQHVCPlayer.OnSeekCompleteListener listener)` Register a callback to be invoked when a seek operation has been completed.
    `void` | `setOnSeiMetaListener(IQHVCPlayerAdvanced.OnSeiMetaListener listener)` 设置sei meta回调 注意需要设置: `#setDataSource( int, String, String, String, Map options)` 设置options.put(IQHVCPlayerAdvanced.KEY_OPTION_ENABLE_ANALYZE_SEI, Boolean.TRUE)
    `void` | `setOnUserDefinedDataListener(IQHVCPlayerAdvanced.OnUserDefinedDataListener listener)`
    `void` | `setOnVideoSizeChangedListener(IQHVCPlayer.OnVideoSizeChangedListener listener)` Register a callback to be invoked when the video size is known or updated.
    `int` | `setPlayBackRate(float rate)` 倍速播放
    `void` | `setPlayerControlConfig(com.qihoo.livecloud.play.PlayerControl playerControl, long playerId, java.lang.String sid)`
    `int` | `setResolutionAdapt(boolean isAdapt, IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)` 自动切换分辨率
    `void` | `setScreenOnWhilePlaying(boolean screenOn)` 设置播放时是否屏幕常亮
    `void` | `setSurface(java.lang.String from, SurfaceTexture texture)` 为播放器设置显示SurfaceTexture
    `void` | `setSurfaceRenderListener(IQHVCPlayerAdvanced.SurfaceRenderListener surfaceRenderListener)` 设置视频渲染高级接口，必须在`IQHVCPlayer.setDisplay(ILiveCloudDisplay)`前调用
    `int` | `setSurfaceViewport(int x, int y, int width, int height)` 为播放器渲染的surface设置Viewport
    `int` | `setVolume(float volume)` 设置音量
    `boolean` | `snapshot(IQHVCPlayerAdvanced.QHVCSnapshotListener snapshotListener)` 截图，异步方法
    `boolean` | `snapshot(java.lang.String path)` 截图 （同步方法，会阻塞线程），该方法已被废弃，请调用`IQHVCPlayerAdvanced.snapshot(QHVCSnapshotListener)`
    `int` | `start()` 播放
    `int` | `startRecorder(java.lang.String filePath, java.lang.String fmt0, com.qihoo.livecloud.play.RecordConfig config, IQHVCPlayerAdvanced.OnRecordListener listener)` 开始录制
    `static void` | `statsSessionStop(java.lang.String sid, boolean isLast, boolean isHw, java.util.Map<java.lang.String,java.lang.Object> mediaInfoMap, java.util.Map<java.lang.String,java.lang.Object> statsMap, long averageBitrate, long averageFps)`
    `int` | `stop()` 停止播放
    `int` | `stop(int reason)` 停止播放
    `int` | `stopRecorder()` 结束录制(异步接口)
    `void` | `switchResolution(int index, IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)` 切换分辨率 此接口是异步的，从切换分辨率到切换完成 有5秒延迟
    `int` | `switchResolutionStop(java.lang.String reason)` 取消分辨率切换
    `void` | `test_hard_decoder_error()`
    `int` | `writeStream(long playerId, int type, long nativeData, int size, long pts, long dts, int iskey, long nativeStreamCodecContext)` 向播放器写入帧数据(推数据模式，目前仅支持relay)

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

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

- - ### Field Detail

    - #### FLOAT_EPSINON

          public static final float FLOAT_EPSINON

      See Also:
        Constant Field Values

    - #### FILTER_MODE_USER

          public static final int FILTER_MODE_USER

      See Also:
        Constant Field Values

    - #### FILTER_MODE_CLOUD

          public static final int FILTER_MODE_CLOUD

      See Also:
        Constant Field Values

    - #### SESSION_ID_SUFFIX_SWITCH

          public static final java.lang.String SESSION_ID_SUFFIX_SWITCH

      See Also:
        Constant Field Values

    - #### SESSION_ID_SUFFIX_HEVC_FAILED

          public static final java.lang.String SESSION_ID_SUFFIX_HEVC_FAILED

      See Also:
        Constant Field Values

    - #### SESSION_ID_SUFFIX_HW_FAILED

          public static final java.lang.String SESSION_ID_SUFFIX_HW_FAILED

      See Also:
        Constant Field Values

    - #### PLAYBACK_RATE_DEFAULT

          public static final float PLAYBACK_RATE_DEFAULT

      See Also:
        Constant Field Values

    - #### KEY_STATS_SWITCH_FAILED_REASON_INT

          public static final java.lang.String KEY_STATS_SWITCH_FAILED_REASON_INT

      See Also:
        Constant Field Values

    - #### SWI_ERR_CLOSE_BY_USER

          public static final int SWI_ERR_CLOSE_BY_USER

      See Also:
        Constant Field Values

    - #### SWI_ERR_INVALID_PARAM

          public static final int SWI_ERR_INVALID_PARAM

      See Also:
        Constant Field Values

    - #### SWI_ERR_PAUSE

          public static final int SWI_ERR_PAUSE

      See Also:
        Constant Field Values

    - #### SWI_ERR_SEEK

          public static final int SWI_ERR_SEEK

      See Also:
        Constant Field Values

    - #### SWI_ERR_STOP

          public static final int SWI_ERR_STOP

      See Also:
        Constant Field Values

    - #### SWI_ERR_PLAYBACK_RATE

          public static final int SWI_ERR_PLAYBACK_RATE

      See Also:
        Constant Field Values

    - #### SWI_ERR_OPEN_TIMEOUT

          public static final int SWI_ERR_OPEN_TIMEOUT

      See Also:
        Constant Field Values

    - #### SWI_ERR_SECOND_PLAYER_OPEN_FAILED

          public static final int SWI_ERR_SECOND_PLAYER_OPEN_FAILED

      See Also:
        Constant Field Values

    - #### SWI_ERR_OTHER

          public static final int SWI_ERR_OTHER

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### QHVCPlayer

          public QHVCPlayer(Context context)

      使用插件化功能时，请使用`QHVCPlayerBuilder.getPlayer(Context)`创建播放器实例

  - ### Method Detail

    - #### getVersion

          public static java.lang.String getVersion()

      获取版本号
      Returns:
        版本号

    - #### getNativeVersion

          public static java.lang.String getNativeVersion()

      获取 Native版本号
      Returns:
        版本号

    - #### setDataSource

          public int setDataSource(int playType,
                                   java.lang.String sn,
                                   java.lang.String channelId,
                                   java.lang.String sign,
                                   java.util.Map<java.lang.String,java.lang.Object> options)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置视频源
      Specified by:
        `setDataSource` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `playType` - 播放类型 `IQHVCPlayer.PLAYTYPE_LIVE`, `IQHVCPlayer.PLAYTYPE_VOD`
        `sn` - sn （需要走调度流程）
        `channelId` - 业务id
        `sign` - 鉴权签名
        `options` - 播放器可选属性 `IQHVCPlayerAdvanced.OptionKey`
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### setDataSource

          public int setDataSource(int playType,
                                   java.lang.String url,
                                   java.lang.String channelId,
                                   java.util.Map<java.lang.String,java.lang.Object> options)

      Description copied from interface: `IQHVCPlayer`
      设置视频源
      Specified by:
        `setDataSource` in interface `IQHVCPlayer`
      Parameters:
        `playType` - 播放类型 `IQHVCPlayer.PLAYTYPE_LIVE`, `IQHVCPlayer.PLAYTYPE_VOD`
        `url` - url
        `channelId` - 业务id
        `options` - 播放器可选属性 `IQHVCPlayerAdvanced.OptionKey`
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### setDataSource

          public int setDataSource(int playType,
                                   java.lang.String url,
                                   java.lang.String channelId)

      Description copied from interface: `IQHVCPlayer`
      设置视频源
      Specified by:
        `setDataSource` in interface `IQHVCPlayer`
      Parameters:
        `playType` - 播放类型 `IQHVCPlayer.PLAYTYPE_LIVE`, `IQHVCPlayer.PLAYTYPE_VOD`
        `url` - 视频源地址
        `channelId` - 业务id
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### setDataSource

          public int setDataSource(int playType,
                                   java.lang.String[] rids,
                                   java.lang.String[] sources,
                                   int defaultIndex,
                                   java.lang.String channelId,
                                   java.lang.String sign,
                                   java.util.Map<java.lang.String,java.lang.Object> options)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置视频源 (用于传多个不同分辨率源，自适应分辨率. 目前仅支持向低分辨率切换)
      Specified by:
        `setDataSource` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `playType` - 播放类型 {`IQHVCPlayer.PLAYTYPE_VOD`
        `rids` - 资源唯一标示(调用方保证唯一)
        `sources` - 多个不同分辨率源(分辨率 从高到低 eg: sn[0]=1080p sn[1]=720p sn[2]=540)
        `defaultIndex` - sdk从sn[defaultIndex]获取url，播放
        `channelId` - 业务id
        `sign` - 鉴权签名
        `options` - 播放器可选属性 `IQHVCPlayerAdvanced.OptionKey`

    - #### snapshot

          public boolean snapshot(java.lang.String path)

      Description copied from interface: `IQHVCPlayerAdvanced`
      截图 （同步方法，会阻塞线程），该方法已被废弃，请调用`IQHVCPlayerAdvanced.snapshot(QHVCSnapshotListener)`
      Specified by:
        `snapshot` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `path` - 存储路径
      Returns:
        true 成功，false 失败

    - #### snapshot

          public boolean snapshot(IQHVCPlayerAdvanced.QHVCSnapshotListener snapshotListener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      截图，异步方法
      Specified by:
        `snapshot` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `snapshotListener` - 结果回调
      Returns:
        true 成功，false 失败

    - #### getDecoderMode

          public int getDecoderMode()

      Description copied from interface: `IQHVCPlayerAdvanced`
      获取当前使用的解码模式
      Specified by:
        `getDecoderMode` in interface `IQHVCPlayerAdvanced`
      Returns:
        解码模式 `IQHVCPlayerAdvanced.LIVECLOUD_SOFT_DECODE_MODE`, `IQHVCPlayerAdvanced.LIVECLOUD_SMART_DECODE_MODE`

    - #### disableRender

          public int disableRender(boolean isDisableRender)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置播放器是否渲染图像
      Specified by:
        `disableRender` in interface `IQHVCPlayerAdvanced`
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### start

          public int start()

      Description copied from interface: `IQHVCPlayer`
      播放
      Specified by:
        `start` in interface `IQHVCPlayer`
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### stop

          public int stop(int reason)

      Description copied from interface: `IQHVCPlayerAdvanced`
      停止播放
      Specified by:
        `stop` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `reason` -
        停止播放的原因
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### addToGroup

          public int addToGroup(int group)

      Description copied from interface: `IQHVCPlayerAdvanced`
      多个播放器设为一组（数据流同步场景）
      Specified by:
        `addToGroup` in interface `IQHVCPlayerAdvanced`
      Returns:
        0: 调用成功 <0: 调用失败

    - #### setOnUserDefinedDataListener

          public void setOnUserDefinedDataListener(IQHVCPlayerAdvanced.OnUserDefinedDataListener listener)

      Specified by:
        `setOnUserDefinedDataListener` in interface `IQHVCPlayerAdvanced`

    - #### setDisplay

          public void setDisplay(com.qihoo.livecloud.play.callback.ILiveCloudDisplay display)

      Description copied from interface: `IQHVCPlayer`
      设置播放器显示View
      Specified by:
        `setDisplay` in interface `IQHVCPlayer`

    - #### setOnPlayerNetStatsListener

          public void setOnPlayerNetStatsListener(IQHVCPlayerAdvanced.OnPlayerNetStatsListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      流量统计信息回调(暂时只支持直播)
      Specified by:
        `setOnPlayerNetStatsListener` in interface `IQHVCPlayerAdvanced`

    - #### prepareAsync

          public int prepareAsync()

      Description copied from interface: `IQHVCPlayer`
      准备播放，异步方法
      注： 调用此方法开始走调度流程。

      成功: 回调OnPreparedListener的onPrepared()接口 - 调度成功，应用层可调用start(0)开始播放
      失败: 回调onError(ERROR_PREPARE_FAILED, ERROR_EXTRA_PREPARE_DISPATCH_FAILED)

      Specified by:
        `prepareAsync` in interface `IQHVCPlayer`
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### isPlaying

          public boolean isPlaying()

      Description copied from interface: `IQHVCPlayer`
      是否正在播放
      Specified by:
        `isPlaying` in interface `IQHVCPlayer`
      Returns:

    - #### pause

          public int pause()

      Description copied from interface: `IQHVCPlayer`
      暂停播放
      Specified by:
        `pause` in interface `IQHVCPlayer`
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### isPaused

          public boolean isPaused()

      Description copied from interface: `IQHVCPlayer`
      视频是否处于暂停状态
      Specified by:
        `isPaused` in interface `IQHVCPlayer`
      Returns:

    - #### seekTo

          public int seekTo(int millis)

      Description copied from interface: `IQHVCPlayer`
      目标时间点,单位：ms(毫秒)
      目前只支持回看拖动
      Specified by:
        `seekTo` in interface `IQHVCPlayer`
      Parameters:
        `millis` - 要拖动到的目标时间
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### seekTo

          public int seekTo(int millis,
                            boolean accurate)

      Description copied from interface: `IQHVCPlayerAdvanced`
      精确seekTo
      Specified by:
        `seekTo` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `millis` - 目标时间点,单位:毫秒
        `accurate` - 是否进行精准seek;accurate=false等同于void seekTo(long msec);
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### setPlayBackRate

          public int setPlayBackRate(float rate)

      Description copied from interface: `IQHVCPlayerAdvanced`
      倍速播放
      Specified by:
        `setPlayBackRate` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `rate` - 播放速度，取值1~n（建议n<=5）
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### getCurrentPosition

          public int getCurrentPosition()

      Description copied from interface: `IQHVCPlayer`
      获取当前已播放时间，单位：ms(毫秒)
      注： 只支持点播（回看）
      Specified by:
        `getCurrentPosition` in interface `IQHVCPlayer`
      Returns:
        当前已播放时间

    - #### getLiveCurrentTimestamp

          public long getLiveCurrentTimestamp()

      Description copied from interface: `IQHVCPlayerAdvanced`
      获取当前帧时间戳 单位：ms(毫秒)
      注: 目前只支持rtsp
      Specified by:
        `getLiveCurrentTimestamp` in interface `IQHVCPlayerAdvanced`
      Returns:
        帧时间戳

    - #### getDuration

          public int getDuration()

      Description copied from interface: `IQHVCPlayer`
      获取视频文件总时长，单位：ms(毫秒)
      注： 只支持点播（回看）
      Specified by:
        `getDuration` in interface `IQHVCPlayer`
      Returns:
        视频文件总时长

    - #### getCurrentStreamTime

          public long getCurrentStreamTime()

      Description copied from interface: `IQHVCPlayerAdvanced`
      获取主播直播流的流时间
      Specified by:
        `getCurrentStreamTime` in interface `IQHVCPlayerAdvanced`

    - #### stop

          public int stop()

      Description copied from interface: `IQHVCPlayer`
      停止播放
      Specified by:
        `stop` in interface `IQHVCPlayer`
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### release

          public void release()

      Description copied from interface: `IQHVCPlayer`
      播放器资源回收
      Specified by:
        `release` in interface `IQHVCPlayer`

    - #### setMute

          public int setMute(boolean mute)

      Description copied from interface: `IQHVCPlayer`
      设置是否静音播放
      Specified by:
        `setMute` in interface `IQHVCPlayer`
      Parameters:
        `mute` -
        true: 静音播放，
        false:正常播放， 默认是false
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### setOnAudioPCMListener

          public void setOnAudioPCMListener(IQHVCPlayerAdvanced.OnAudioPCMListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置音频数据回调
      Specified by:
        `setOnAudioPCMListener` in interface `IQHVCPlayerAdvanced`

    - #### setOnBufferingUpdateListener

          public void setOnBufferingUpdateListener(IQHVCPlayer.OnBufferingUpdateListener listener)

      Description copied from interface: `IQHVCPlayer`
      Register a callback to be invoked when the status of a network stream's buffer has changed.
      Specified by:
        `setOnBufferingUpdateListener` in interface `IQHVCPlayer`

    - #### setOnBufferingEventListener

          public void setOnBufferingEventListener(IQHVCPlayer.OnBufferingEventListener listener)

      Specified by:
        `setOnBufferingEventListener` in interface `IQHVCPlayer`

    - #### isMute

          public boolean isMute()

      Description copied from interface: `IQHVCPlayer`
      是否是静音状态
      Specified by:
        `isMute` in interface `IQHVCPlayer`
      Returns:
        ture - 当前是静音状态

    - #### setScreenOnWhilePlaying

          public void setScreenOnWhilePlaying(boolean screenOn)

      Description copied from interface: `IQHVCPlayer`
      设置播放时是否屏幕常亮
      Specified by:
        `setScreenOnWhilePlaying` in interface `IQHVCPlayer`
      Parameters:
        `screenOn` -
        true: 屏幕常亮，
        false：系统默认, 默认是true。

    - #### getPlayerId

          public long getPlayerId()

      Specified by:
        `getPlayerId` in interface `IQHVCPlayer`
      Returns:

    - #### setOnPreparedListener

          public void setOnPreparedListener(IQHVCPlayer.OnPreparedListener listener)

      Description copied from interface: `IQHVCPlayer`
      Register a callback to be invoked when the media source is ready for playback.
      Specified by:
        `setOnPreparedListener` in interface `IQHVCPlayer`

    - #### setOnSeekCompleteListener

          public void setOnSeekCompleteListener(IQHVCPlayer.OnSeekCompleteListener listener)

      Description copied from interface: `IQHVCPlayer`
      Register a callback to be invoked when a seek operation has been completed.
      Specified by:
        `setOnSeekCompleteListener` in interface `IQHVCPlayer`

    - #### setOnErrorListener

          public void setOnErrorListener(IQHVCPlayer.OnErrorListener listener)

      Description copied from interface: `IQHVCPlayer`
      Register a callback to be invoked when an error has happened during an asynchronous operation.
      Specified by:
        `setOnErrorListener` in interface `IQHVCPlayer`

    - #### setOnCompletionListener

          public void setOnCompletionListener(IQHVCPlayer.OnCompletionListener listener)

      Description copied from interface: `IQHVCPlayer`
      Register a callback to be invoked when the end of a media source has been reached during playback.
      Specified by:
        `setOnCompletionListener` in interface `IQHVCPlayer`

    - #### setOnInfoListener

          public void setOnInfoListener(IQHVCPlayer.OnInfoListener listener)

      Description copied from interface: `IQHVCPlayer`
      Register a callback to be invoked when an info/warning is available.
      Specified by:
        `setOnInfoListener` in interface `IQHVCPlayer`

    - #### setOnVideoSizeChangedListener

          public void setOnVideoSizeChangedListener(IQHVCPlayer.OnVideoSizeChangedListener listener)

      Description copied from interface: `IQHVCPlayer`
      Register a callback to be invoked when the video size is known or updated.
      Specified by:
        `setOnVideoSizeChangedListener` in interface `IQHVCPlayer`

    - #### onPlayerMsg

          public void onPlayerMsg(long playerId,
                                  int command,
                                  long para1,
                                  long para2,
                                  int user)

      底层(C层)播放消息回调
      Specified by:
        `onPlayerMsg` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`
      Parameters:
        `playerId` -
        `command` -
        `para1` -
        `para2` -
        `user` -

    - #### onPlayerMsgHandle

          public void onPlayerMsgHandle(long playerId,
                                        int command,
                                        long para1,
                                        long para2,
                                        int user)

      底层(C层)播放消息回调
      Parameters:
        `playerId` -
        `command` -
        `para1` -
        `para2` -
        `user` -

    - #### onUpdateStatus

          public void onUpdateStatus(long playerId,
                                     int vbps,
                                     int abps,
                                     int vfps,
                                     int afps,
                                     int fps,
                                     int bitrate,
                                     int param1,
                                     int param2,
                                     int user)

      底层(C层)码流回调
      Specified by:
        `onUpdateStatus` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`
      Parameters:
        `playerId` -
        `vbps` - 视频码率
        `abps` - 音频码率
        `vfps` - 视频帧率
        `afps` - 音频帧率
        `fps` -
        `bitrate` -
        `param1` -
        `param2` -
        `user` -

    - #### onUpdateGPPlayState

          public void onUpdateGPPlayState(long playerId,
                                          long nowTime,
                                          long videoBufferTime,
                                          long audioBufferTime)

      onUpdateGPPlayState
      Specified by:
        `onUpdateGPPlayState` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`
      Parameters:
        `playerId` -
        `nowTime` -
        `videoBufferTime` -
        `audioBufferTime` -

    - #### onMessage

          public void onMessage(long playerId,
                                int id,
                                int type,
                                int flags,
                                int size,
                                long data,
                                long time)

      Specified by:
        `onMessage` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`
      Parameters:
        `playerId` - palyerID
        `id` - 音频流的id
        `type` -
        `flags` -
        `size` - 数据长度
        `data` - 预留以前是想返回data地址的，后来用共享内存，所以预留了
        `time` - 时间戳

    - #### onUserDefineData

          public void onUserDefineData(long playerId,
                                       byte[] data,
                                       int length)

      用户自定义数据回调
      Specified by:
        `onUserDefineData` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`
      Parameters:
        `playerId` -
        `data` -
        `length` -

    - #### onPacketCallBack

          public long onPacketCallBack(long playerId,
                                       long context,
                                       long packet)

      Description copied from interface: `com.qihoo.livecloud.play.callback.PlayerCallback`
      音频/视频数据回调
      Specified by:
        `onPacketCallBack` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`
      Parameters:
        `playerId` - player handle
        `context` - native player context
        `packet` - audio/video packet
      Returns:
        处理后的音频/视频数据

    - #### onSeiMeta

          public void onSeiMeta(long plyerId,
                                long type,
                                java.lang.String data,
                                int user)

      Description copied from interface: `com.qihoo.livecloud.play.callback.PlayerCallback`
      ser meta
      Specified by:
        `onSeiMeta` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`

    - #### onCustomizeSeiMeta

          public void onCustomizeSeiMeta(long playerId,
                                         byte[] uuid,
                                         byte[] data)

      Description copied from interface: `com.qihoo.livecloud.play.callback.PlayerCallback`
      用户自定义SEI META
      Specified by:
        `onCustomizeSeiMeta` in interface `com.qihoo.livecloud.play.callback.PlayerCallback`

    - #### setOnProgressChangeListener

          public void setOnProgressChangeListener(IQHVCPlayer.onProgressChangeListener listener)

      Specified by:
        `setOnProgressChangeListener` in interface `IQHVCPlayer`

    - #### setVolume

          public int setVolume(float volume)

      Description copied from interface: `IQHVCPlayer`
      设置音量
      Specified by:
        `setVolume` in interface `IQHVCPlayer`
      Parameters:
        `volume` - 音量范围 0.0~1.0（1.0最大）
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### getVolume

          public float getVolume()

      Description copied from interface: `IQHVCPlayer`
      获取播放器当前音量
      Specified by:
        `getVolume` in interface `IQHVCPlayer`
      Returns:
        音量范围 0.0~1.0（1.0最大） <0 无效

    - #### getMediaInformation

          public java.util.Map<java.lang.String,java.lang.Object> getMediaInformation()

      Description copied from interface: `IQHVCPlayer`
      获取视频信息
      Specified by:
        `getMediaInformation` in interface `IQHVCPlayer`
      Returns:

    - #### getRenderMode

          public int getRenderMode()

      Description copied from interface: `IQHVCPlayer`
      获取渲染模式
      Specified by:
        `getRenderMode` in interface `IQHVCPlayer`
      Returns:
        `IQHVCPlayerAdvanced.RenderMode`

    - #### setSurfaceRenderListener

          public void setSurfaceRenderListener(IQHVCPlayerAdvanced.SurfaceRenderListener surfaceRenderListener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置视频渲染高级接口，必须在`IQHVCPlayer.setDisplay(ILiveCloudDisplay)`前调用
      Specified by:
        `setSurfaceRenderListener` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `surfaceRenderListener` - 视频渲染高级接口

    - #### setSurface

          public void setSurface(java.lang.String from,
                                 SurfaceTexture texture)

      Description copied from interface: `IQHVCPlayer`
      为播放器设置显示SurfaceTexture
      Specified by:
        `setSurface` in interface `IQHVCPlayer`
        `texture` - `SurfaceTexture` 播放器渲染的texture

    - #### setSurfaceViewport

          public int setSurfaceViewport(int x,
                                        int y,
                                        int width,
                                        int height)

      Description copied from interface: `IQHVCPlayer`
      为播放器渲染的surface设置Viewport
      Specified by:
        `setSurfaceViewport` in interface `IQHVCPlayer`
      Parameters:
        `x` - x位置
        `y` - y位置
        `width` - 宽度
        `height` - 高度
      Returns:
        0: 调用成功 <0: 调用失败

    - #### isUseHdRedord

          public boolean isUseHdRedord(int width,
                                       int height)

      是否开启硬编
      Parameters:
        `width` - 视频宽
        `height` - 视频高
      Returns:

    - #### startRecorder

          public int startRecorder(java.lang.String filePath,
                                   java.lang.String fmt0,
                                   com.qihoo.livecloud.play.RecordConfig config,
                                   IQHVCPlayerAdvanced.OnRecordListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      开始录制

      注意：不支持暂停时录制
      录制mp4: fmt使用 `IQHVCPlayerAdvanced.RECORDER_FORMAT_MP4`, Config使用VideoRecordConfig 录制gif: fmt使用 `IQHVCPlayerAdvanced.RECORDER_FORMAT_GIF`, Config使用GifRecordConfig

      Specified by:
        `startRecorder` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `filePath` - 录像存储路径（确保有读写权限）
        `fmt0` - 存储格式 `IQHVCPlayerAdvanced.RecorderFormat`
        `config` - 配置
        `listener` - callback
      Returns:
        0:成功 <0: 失败

    - #### stopRecorder

          public int stopRecorder()

      Description copied from interface: `IQHVCPlayerAdvanced`
      结束录制(异步接口)
      Specified by:
        `stopRecorder` in interface `IQHVCPlayerAdvanced`
      Returns:
        0: 调用成功 <0: 调用失败

    - #### setOnAudioVolumeListener

          public int setOnAudioVolumeListener(IQHVCPlayerAdvanced.OnAudioVolumeListener listener,
                                              long period)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置音量回调(只支持直播) 收到INFO_LIVE_PLAY_START后调用

      设置音量回调：listener != null && period > 0 删除音量回调: listener == null || period <= 0

      Specified by:
        `setOnAudioVolumeListener` in interface `IQHVCPlayerAdvanced`
        `period` - 回调时间间隔
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### setOnPacketListener

          public void setOnPacketListener(IQHVCPlayerAdvanced.OnPacketListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置音频/视频数据回调
      Specified by:
        `setOnPacketListener` in interface `IQHVCPlayerAdvanced`

    - #### setOnSeiMetaListener

          public void setOnSeiMetaListener(IQHVCPlayerAdvanced.OnSeiMetaListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置sei meta回调 注意需要设置: `#setDataSource( int, String, String, String, Map options)` 设置options.put(IQHVCPlayerAdvanced.KEY_OPTION_ENABLE_ANALYZE_SEI, Boolean.TRUE)
      Specified by:
        `setOnSeiMetaListener` in interface `IQHVCPlayerAdvanced`

    - #### setOnCustomizeSeiMetaListener

          public void setOnCustomizeSeiMetaListener(IQHVCPlayerAdvanced.OnCustomizeSeiMetaListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      设置自定义sei meta回调 注意需要设置: `#setDataSource( int, String, String, String, Map options)` 设置options.put(IQHVCPlayerAdvanced.KEY_OPTION_ENABLE_ANALYZE_SEI, Boolean.TRUE)
      Specified by:
        `setOnCustomizeSeiMetaListener` in interface `IQHVCPlayerAdvanced`

    - #### writeStream

          public int writeStream(long playerId,
                                 int type,
                                 long nativeData,
                                 int size,
                                 long pts,
                                 long dts,
                                 int iskey,
                                 long nativeStreamCodecContext)

      Description copied from interface: `IQHVCPlayerAdvanced`
      向播放器写入帧数据(推数据模式，目前仅支持relay)
      Specified by:
        `writeStream` in interface `IQHVCPlayerAdvanced`
        `type` - 数据包格式
        `nativeData` - 帧数据
        `size` - 数据长度
        `iskey` - 是否是关键帧
      Returns:

    - #### setPlayerControlConfig

          public void setPlayerControlConfig(com.qihoo.livecloud.play.PlayerControl playerControl,
                                             long playerId,
                                             java.lang.String sid)

    - #### switchResolution

          public void switchResolution(int index,
                                       IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      切换分辨率
      此接口是异步的，从切换分辨率到切换完成 有5秒延迟
      Specified by:
        `switchResolution` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `index` - 数据源索引，`IQHVCPlayerAdvanced.setDataSource(int, String[], String[], int, String, String, Map)`设置的source的索引
        `listener` - 状态回调

    - #### switchResolutionStop

          public int switchResolutionStop(java.lang.String reason)

      Description copied from interface: `IQHVCPlayerAdvanced`
      取消分辨率切换
      Specified by:
        `switchResolutionStop` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `reason` - 取消切换原因
      Returns:
        0: 调用成功 <0: 调用失败

    - #### setResolutionAdapt

          public int setResolutionAdapt(boolean isAdapt,
                                        IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)

      Description copied from interface: `IQHVCPlayerAdvanced`
      自动切换分辨率
      Specified by:
        `setResolutionAdapt` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `isAdapt` - 是否根据网络状况自动切换分辨率
        `listener` - 状态回调
      Returns:
        0: 调用成功 <0: 调用失败

    - #### isSystemMediaPlayer

          public boolean isSystemMediaPlayer()

      Description copied from interface: `IQHVCPlayerAdvanced`
      是否是系统播放器
      Specified by:
        `isSystemMediaPlayer` in interface `IQHVCPlayerAdvanced`
      Returns:
        true 系统播放器，false 直播云播放器

    - #### isDefaultPlayBackRate

          public static boolean isDefaultPlayBackRate(float playbackRate)

    - #### getPropertyRotate

          public int getPropertyRotate()

      Description copied from interface: `IQHVCPlayerAdvanced`
      获取视频的旋转属性
      Specified by:
        `getPropertyRotate` in interface `IQHVCPlayerAdvanced`
      Returns:
        视频的旋转角度

    - #### setFilterValues

          public void setFilterValues(float brightness,
                                      float contrast,
                                      float saturation)

      设置视频画质增强filter属性
      Specified by:
        `setFilterValues` in interface `IQHVCPlayerAdvanced`
      Parameters:
        `brightness` - 亮度 取值范围(-0.2f, 0.35f)
        `contrast` - 对比度 取值范围(0.9f, 1.6f)
        `saturation` - 饱和度 取值范围(0.15f, 2f)

    - #### test_hard_decoder_error

          public void test_hard_decoder_error()

    - #### getRecordingState

          public boolean getRecordingState()

      是否是录制状态
      Returns:

    - #### statsSessionStop

          public static void statsSessionStop(java.lang.String sid,
                                              boolean isLast,
                                              boolean isHw,
                                              java.util.Map<java.lang.String,java.lang.Object> mediaInfoMap,
                                              java.util.Map<java.lang.String,java.lang.Object> statsMap,
                                              long averageBitrate,
                                              long averageFps)

    - #### pauseRecord

          public void pauseRecord()

    - #### resumerRecord

          public void resumerRecord()

    - #### getHwDecoderName

          public java.lang.String getHwDecoderName()

    - #### isEnableAnalyzeSei

          public boolean isEnableAnalyzeSei()

    - #### preLoad

          public static void preLoad()

      预加载so

      可以减少首次播放耗时 eg: nexus5x 8.1.0