com.qihoo.videocloud

## Interface IQHVCPlayerAdvanced

- All Superinterfaces:
    IQHVCPlayer
  All Known Implementing Classes:
    QHVCPlayer

      public interface IQHVCPlayerAdvanced
      extends IQHVCPlayer

  播放器高级功能

  Created by guohailiang on 2017/5/16.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static interface` | `IQHVCPlayerAdvanced.DecodeMode` 解码模式
    `static interface` | `IQHVCPlayerAdvanced.OnAudioPCMListener`
    `static interface` | `IQHVCPlayerAdvanced.OnAudioVolumeListener` 音量listener
    `static interface` | `IQHVCPlayerAdvanced.OnCustomizeSeiMetaListener`
    `static interface` | `IQHVCPlayerAdvanced.OnPacketListener`
    `static interface` | `IQHVCPlayerAdvanced.OnPlayerNetStatsListener`
    `static interface` | `IQHVCPlayerAdvanced.OnRecordListener` 视频/gif录制listener
    `static interface` | `IQHVCPlayerAdvanced.OnSeiMetaListener`
    `static interface` | `IQHVCPlayerAdvanced.OnUserDefinedDataListener` user defined data
    `static interface` | `IQHVCPlayerAdvanced.OptionKey` setDataSource options key
    `static interface` | `IQHVCPlayerAdvanced.PlayMode` 播放模式
    `static interface` | `IQHVCPlayerAdvanced.QHVCDecryptType` 解密类型
    `static interface` | `IQHVCPlayerAdvanced.QHVCPacketType` 数据包类型
    `static interface` | `IQHVCPlayerAdvanced.QHVCSnapshotListener` 截图回调
    `static interface` | `IQHVCPlayerAdvanced.QHVCSwitchResolutionError` 切分辨率错误
    `static interface` | `IQHVCPlayerAdvanced.QHVCSwitchResolutionListener` 切换分辨率回调
    `static interface` | `IQHVCPlayerAdvanced.RecorderFormat` 视频录制格式
    `static interface` | `IQHVCPlayerAdvanced.RenderMode` 渲染填充模式
    `static interface` | `IQHVCPlayerAdvanced.StopReason` 停止播放的原因 业务可自行定义
    `static interface` | `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`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `KEY_OPTION_DECODE_MODE` `IQHVCPlayerAdvanced.DecodeMode`解码模式 注：对于智能解码模式，SDK会做黑名单机制，如果手机被加入黑名单的话，即使设置为智能解码模式，SDK仍然会使用软解模式。
    `static java.lang.String` | `KEY_OPTION_DECRYPT_KEY` `String` 解密key
    `static java.lang.String` | `KEY_OPTION_DECRYPT_TYPE` `Integer` 解密类型 eg: `QHVC_DECRYPT_TYPE_FFMPEG`
    `static java.lang.String` | `KEY_OPTION_ENABLE_ANALYZE_SEI` `Boolean` 开启解析sei
    `static java.lang.String` | `KEY_OPTION_FORCE_P2P` `Boolean` 播放是否强制使用p2p
    `static java.lang.String` | `KEY_OPTION_HLS_REFERER` `String` HTTP Live Streaming referer.
    `static java.lang.String` | `KEY_OPTION_MAX_ANALYZE_DURATION` `Integer` 打开音视频时，最大探测时长
    `static java.lang.String` | `KEY_OPTION_MUTE` `Boolean` 开始播放的时候是否静音
    `static java.lang.String` | `KEY_OPTION_PLAY_MODE` `IQHVCPlayerAdvanced.PlayMode` 设置播放器播放模式
    `static java.lang.String` | `KEY_OPTION_POSITION` `Integer` 只适用于点播，设置点播开始的位置(单位： 毫秒)
    `static java.lang.String` | `KEY_OPTION_POSITION_ACCURATE` `Boolean` 只适用于点播，设置点播开始的位置--是否为精确seek
    `static java.lang.String` | `KEY_OPTION_PREVIEW_DURATION` `Integer`预览时长.
    `static java.lang.String` | `KEY_OPTION_RENDER_MODE` `IQHVCPlayerAdvanced.RenderMode` 播放器渲染模式
    `static java.lang.String` | `KEY_OPTION_SCHEDULE_ENCODE_TYPE` `String` 调度请求视频源 编码类型 支持设置"h264" 或 "h265" 默认："h265"
    `static java.lang.String` | `KEY_OPTION_SCHEDULE_URL` `String` 调度地址，需要使用自定义的调度地址时使用
    `static java.lang.String` | `KEY_OPTION_SESSION_ID` `String` session id 如果设置这个值，需要保证每次播放, 这个值是唯一的
    `static java.lang.String` | `KEY_OPTION_SRC_OUTSIDE` `Integer` 外部推数据模式 0:player获取数据 1:外部推数据进来
    `static java.lang.String` | `KEY_OPTION_STREAM_TYPE` `Constants.LiveType` 推拉流类型: 纯音频、纯视频或音视频
    `static java.lang.String` | `KEY_OPTION_TRANSPORT_PROTOCOL` `Integer` 传输协议 0:udp 1:tcp
    `static int` | `LIVECLOUD_SMART_DECODE_MODE` 智能解码模式.优先硬解码，若硬解码不支持，切换到软解码 `getDecoderMode()`
    `static int` | `LIVECLOUD_SOFT_DECODE_MODE` 软解模式 `getDecoderMode()`
    `static int` | `PLAY_ERROR` 播放出错
    `static int` | `PLAY_INCOMING_CALL` 来电话
    `static int` | `PLAY_OTHER` 其他错误
    `static int` | `PLAY_OVER` 直播结束
    `static java.lang.String` | `PLAYER_CLASS_NAME`
    `static int` | `PLAYMODE_FLUENCY` 流畅模式
    `static int` | `PLAYMODE_LIVE_IOT` IOT
    `static int` | `PLAYMODE_LOWLATENCY` 低延迟模式
    `static int` | `QHVC_DECRYPT_TYPE_DISHI`
    `static int` | `QHVC_DECRYPT_TYPE_FFMPEG` 解密类型: 默认
    `static int` | `QHVC_DECRYPT_TYPE_SHUIDI`
    `static int` | `QHVC_PACKET_TYPE_AAC`
    `static int` | `QHVC_PACKET_TYPE_H264`
    `static int` | `QHVC_PACKET_TYPE_H265`
    `static int` | `QHVC_PACKET_TYPE_NONE`
    `static int` | `QHVC_PACKET_TYPE_OPUS`
    `static int` | `QHVC_PACKET_TYPE_PCM_ALAW`
    `static int` | `QHVC_PACKET_TYPE_PCM_G726LE`
    `static int` | `QHVC_PACKET_TYPE_PCM_MULAW`
    `static int` | `QHVC_PACKET_TYPE_PCM_S16LE`
    `static java.lang.String` | `RECORDER_FORMAT_GIF`
    `static java.lang.String` | `RECORDER_FORMAT_MOV` Deprecated.
    `static java.lang.String` | `RECORDER_FORMAT_MP4`
    `static int` | `RENDER_MODE_FULL` 如果视频尺寸和显示视窗尺寸不一致，图像拉伸后填满视窗
    `static int` | `RENDER_MODE_IN` 在保证视频宽高比的前提下，将视频进行横向或纵向填满。（可能会留黑边）
    `static int` | `RENDER_MODE_OUT` 在保持视频宽高比的前提下，按照显示视窗的比例进行周边裁剪后填满视窗。
    `static int` | `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`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `addToGroup(int group)` 多个播放器设为一组（数据流同步场景）
    `int` | `disableRender(boolean isDisableRender)` 设置播放器是否渲染图像
    `long` | `getCurrentStreamTime()` 获取主播直播流的流时间
    `int` | `getDecoderMode()` 获取当前使用的解码模式
    `long` | `getLiveCurrentTimestamp()` 获取当前帧时间戳 单位：ms(毫秒) 注: 目前只支持rtsp
    `int` | `getPropertyRotate()` 获取视频的旋转属性
    `boolean` | `isSystemMediaPlayer()` 是否是系统播放器
    `int` | `seekTo(int millis, boolean accurate)` 精确seekTo
    `int` | `setDataSource(int playType, java.lang.String[] rid, java.lang.String[] sn, 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 sn, java.lang.String channelId, java.lang.String sign, java.util.Map<java.lang.String,java.lang.Object> options)` 设置视频源
    `void` | `setFilterValues(float brightness, float contrast, float saturation)` 设置视频画质增强filter属性
    `void` | `setOnAudioPCMListener(IQHVCPlayerAdvanced.OnAudioPCMListener listener)` 设置音频数据回调
    `int` | `setOnAudioVolumeListener(IQHVCPlayerAdvanced.OnAudioVolumeListener listener, long period)` 设置音量回调(只支持直播) 收到INFO_LIVE_PLAY_START后调用
    `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` | `setOnPacketListener(IQHVCPlayerAdvanced.OnPacketListener listener)` 设置音频/视频数据回调
    `void` | `setOnPlayerNetStatsListener(IQHVCPlayerAdvanced.OnPlayerNetStatsListener listener)` 流量统计信息回调(暂时只支持直播)
    `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)`
    `int` | `setPlayBackRate(float rate)` 倍速播放
    `int` | `setResolutionAdapt(boolean isAdapt, IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)` 自动切换分辨率
    `void` | `setSurfaceRenderListener(IQHVCPlayerAdvanced.SurfaceRenderListener surfaceRenderListener)` 设置视频渲染高级接口，必须在`IQHVCPlayer.setDisplay(ILiveCloudDisplay)`前调用
    `boolean` | `snapshot(IQHVCPlayerAdvanced.QHVCSnapshotListener snapshotListener)` 截图，异步方法
    `boolean` | `snapshot(java.lang.String path)` Deprecated.
    `int` | `startRecorder(java.lang.String filePath, java.lang.String fmt, com.qihoo.livecloud.play.RecordConfig config, IQHVCPlayerAdvanced.OnRecordListener listener)` 开始录制
    `int` | `stop(int reason)` 停止播放
    `int` | `stopRecorder()` 结束录制(异步接口)
    `void` | `switchResolution(int index, IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)` 切换分辨率 此接口是异步的，从切换分辨率到切换完成 有5秒延迟
    `int` | `switchResolutionStop(java.lang.String reason)` 取消分辨率切换
    `int` | `writeStream(long playerId, int type, long nativeData, int size, long pts, long dts, int iskey, long nativeStreamCodecContext)` 向播放器写入帧数据(推数据模式，目前仅支持relay)

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

      `getCurrentPosition, getDuration, getMediaInformation, getPlayerId, getRenderMode, getVolume, isMute, isPaused, isPlaying, pause, prepareAsync, release, seekTo, setDataSource, setDataSource, setDisplay, setMute, setOnBufferingEventListener, setOnBufferingUpdateListener, setOnCompletionListener, setOnErrorListener, setOnInfoListener, setOnPreparedListener, setOnProgressChangeListener, setOnSeekCompleteListener, setOnVideoSizeChangedListener, setScreenOnWhilePlaying, setSurface, setSurfaceViewport, setVolume, start, stop`

- - ### Field Detail

    - #### PLAYER_CLASS_NAME

          static final java.lang.String PLAYER_CLASS_NAME

      See Also:
        Constant Field Values

    - #### PLAYMODE_FLUENCY

          static final int PLAYMODE_FLUENCY

      流畅模式
      See Also:
        Constant Field Values

    - #### PLAYMODE_LOWLATENCY

          static final int PLAYMODE_LOWLATENCY

      低延迟模式
      See Also:
        Constant Field Values

    - #### PLAYMODE_LIVE_IOT

          static final int PLAYMODE_LIVE_IOT

      IOT
      See Also:
        Constant Field Values

    - #### LIVECLOUD_SOFT_DECODE_MODE

          static final int LIVECLOUD_SOFT_DECODE_MODE

      软解模式 `getDecoderMode()`
      See Also:
        Constant Field Values

    - #### LIVECLOUD_SMART_DECODE_MODE

          static final int LIVECLOUD_SMART_DECODE_MODE

      智能解码模式.优先硬解码，若硬解码不支持，切换到软解码 `getDecoderMode()`
      See Also:
        Constant Field Values

    - #### RENDER_MODE_IN

          static final int RENDER_MODE_IN

      在保证视频宽高比的前提下，将视频进行横向或纵向填满。（可能会留黑边）
      See Also:
        Constant Field Values

    - #### RENDER_MODE_OUT

          static final int RENDER_MODE_OUT

      在保持视频宽高比的前提下，按照显示视窗的比例进行周边裁剪后填满视窗。
      See Also:
        Constant Field Values

    - #### RENDER_MODE_FULL

          static final int RENDER_MODE_FULL

      如果视频尺寸和显示视窗尺寸不一致，图像拉伸后填满视窗
      See Also:
        Constant Field Values

    - #### USER_CLOSE

          static final int USER_CLOSE

      用户主动关闭
      See Also:
        Constant Field Values

    - #### PLAY_OVER

          static final int PLAY_OVER

      直播结束
      See Also:
        Constant Field Values

    - #### PLAY_ERROR

          static final int PLAY_ERROR

      播放出错
      See Also:
        Constant Field Values

    - #### PLAY_INCOMING_CALL

          static final int PLAY_INCOMING_CALL

      来电话
      See Also:
        Constant Field Values

    - #### PLAY_OTHER

          static final int PLAY_OTHER

      其他错误
      See Also:
        Constant Field Values

    - #### KEY_OPTION_POSITION

          static final java.lang.String KEY_OPTION_POSITION

      `Integer` 只适用于点播，设置点播开始的位置(单位： 毫秒)
      See Also:
        Constant Field Values

    - #### KEY_OPTION_POSITION_ACCURATE

          static final java.lang.String KEY_OPTION_POSITION_ACCURATE

      `Boolean` 只适用于点播，设置点播开始的位置--是否为精确seek
      See Also:
        Constant Field Values

    - #### KEY_OPTION_SCHEDULE_URL

          static final java.lang.String KEY_OPTION_SCHEDULE_URL

      `String` 调度地址，需要使用自定义的调度地址时使用
      See Also:
        Constant Field Values

    - #### KEY_OPTION_RENDER_MODE

          static final java.lang.String KEY_OPTION_RENDER_MODE

      `IQHVCPlayerAdvanced.RenderMode` 播放器渲染模式
      See Also:
        Constant Field Values

    - #### KEY_OPTION_PLAY_MODE

          static final java.lang.String KEY_OPTION_PLAY_MODE

      `IQHVCPlayerAdvanced.PlayMode` 设置播放器播放模式

      支持多种模式组合 eg: `PLAYMODE_LOWLATENCY` | `PLAYMODE_LIVE_IOT`

      See Also:
        Constant Field Values

    - #### KEY_OPTION_MUTE

          static final java.lang.String KEY_OPTION_MUTE

      `Boolean` 开始播放的时候是否静音
      See Also:
        Constant Field Values

    - #### KEY_OPTION_STREAM_TYPE

          static final java.lang.String KEY_OPTION_STREAM_TYPE

      `Constants.LiveType` 推拉流类型: 纯音频、纯视频或音视频
      See Also:
        Constant Field Values

    - #### KEY_OPTION_PREVIEW_DURATION

          static final java.lang.String KEY_OPTION_PREVIEW_DURATION

      `Integer`预览时长. 单位: 毫秒
      See Also:
        Constant Field Values

    - #### KEY_OPTION_DECODE_MODE

          static final java.lang.String KEY_OPTION_DECODE_MODE

      `IQHVCPlayerAdvanced.DecodeMode`解码模式
      注：对于智能解码模式，SDK会做黑名单机制，如果手机被加入黑名单的话，即使设置为智能解码模式，SDK仍然会使用软解模式。
      See Also:
        Constant Field Values

    - #### KEY_OPTION_FORCE_P2P

          static final java.lang.String KEY_OPTION_FORCE_P2P

      `Boolean` 播放是否强制使用p2p
      See Also:
        Constant Field Values

    - #### KEY_OPTION_MAX_ANALYZE_DURATION

          static final java.lang.String KEY_OPTION_MAX_ANALYZE_DURATION

      `Integer` 打开音视频时，最大探测时长

      0 < max_analyze_duration < 20000

      See Also:
        Constant Field Values

    - #### KEY_OPTION_TRANSPORT_PROTOCOL

          static final java.lang.String KEY_OPTION_TRANSPORT_PROTOCOL

      `Integer` 传输协议 0:udp 1:tcp

      See Also:
        Constant Field Values

    - #### KEY_OPTION_SESSION_ID

          static final java.lang.String KEY_OPTION_SESSION_ID

      `String` session id 如果设置这个值，需要保证每次播放, 这个值是唯一的
      See Also:
        Constant Field Values

    - #### KEY_OPTION_SCHEDULE_ENCODE_TYPE

          static final java.lang.String KEY_OPTION_SCHEDULE_ENCODE_TYPE

      `String` 调度请求视频源 编码类型 支持设置"h264" 或 "h265" 默认："h265"
      See Also:
        Constant Field Values

    - #### KEY_OPTION_SRC_OUTSIDE

          static final java.lang.String KEY_OPTION_SRC_OUTSIDE

      `Integer` 外部推数据模式 0:player获取数据 1:外部推数据进来
      See Also:
        Constant Field Values

    - #### KEY_OPTION_HLS_REFERER

          static final java.lang.String KEY_OPTION_HLS_REFERER

      `String` HTTP Live Streaming referer. 默认不设置
      See Also:
        Constant Field Values

    - #### KEY_OPTION_DECRYPT_TYPE

          static final java.lang.String KEY_OPTION_DECRYPT_TYPE

      `Integer` 解密类型 eg: `QHVC_DECRYPT_TYPE_FFMPEG`

      与`KEY_OPTION_DECRYPT_KEY`一起使用

      See Also:
        Constant Field Values

    - #### KEY_OPTION_DECRYPT_KEY

          static final java.lang.String KEY_OPTION_DECRYPT_KEY

      `String` 解密key

      与`KEY_OPTION_DECRYPT_TYPE`一起使用

      See Also:
        Constant Field Values

    - #### QHVC_DECRYPT_TYPE_FFMPEG

          static final int QHVC_DECRYPT_TYPE_FFMPEG

      解密类型: 默认
      See Also:
        Constant Field Values

    - #### QHVC_DECRYPT_TYPE_SHUIDI

          static final int QHVC_DECRYPT_TYPE_SHUIDI

      See Also:
        Constant Field Values

    - #### QHVC_DECRYPT_TYPE_DISHI

          static final int QHVC_DECRYPT_TYPE_DISHI

      See Also:
        Constant Field Values

    - #### KEY_OPTION_ENABLE_ANALYZE_SEI

          static final java.lang.String KEY_OPTION_ENABLE_ANALYZE_SEI

      `Boolean` 开启解析sei
      See Also:
        Constant Field Values

    - #### RECORDER_FORMAT_MP4

          static final java.lang.String RECORDER_FORMAT_MP4

      See Also:
        Constant Field Values

    - #### RECORDER_FORMAT_MOV

          @Deprecated
          static final java.lang.String RECORDER_FORMAT_MOV

      Deprecated.
      See Also:
        Constant Field Values

    - #### RECORDER_FORMAT_GIF

          static final java.lang.String RECORDER_FORMAT_GIF

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_NONE

          static final int QHVC_PACKET_TYPE_NONE

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_H264

          static final int QHVC_PACKET_TYPE_H264

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_H265

          static final int QHVC_PACKET_TYPE_H265

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_AAC

          static final int QHVC_PACKET_TYPE_AAC

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_OPUS

          static final int QHVC_PACKET_TYPE_OPUS

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_PCM_S16LE

          static final int QHVC_PACKET_TYPE_PCM_S16LE

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_PCM_MULAW

          static final int QHVC_PACKET_TYPE_PCM_MULAW

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_PCM_ALAW

          static final int QHVC_PACKET_TYPE_PCM_ALAW

      See Also:
        Constant Field Values

    - #### QHVC_PACKET_TYPE_PCM_G726LE

          static final int QHVC_PACKET_TYPE_PCM_G726LE

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### setDataSource

          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)

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

    - #### setDataSource

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

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

    - #### snapshot

          boolean snapshot(java.lang.String path)

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

    - #### snapshot

          boolean snapshot(IQHVCPlayerAdvanced.QHVCSnapshotListener snapshotListener)

      截图，异步方法
      Parameters:
        `snapshotListener` - 结果回调
      Returns:
        true 成功，false 失败

    - #### getDecoderMode

          int getDecoderMode()

      获取当前使用的解码模式
      Returns:
        解码模式 `LIVECLOUD_SOFT_DECODE_MODE`, `LIVECLOUD_SMART_DECODE_MODE`

    - #### disableRender

          int disableRender(boolean isDisableRender)

      设置播放器是否渲染图像
      Parameters:
        `isDisableRender：` -
        true: 不渲染图像，只播放声音
        false:播放声音和图像
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### seekTo

          int seekTo(int millis,
                     boolean accurate)

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

    - #### setPlayBackRate

          int setPlayBackRate(float rate)

      倍速播放
      Parameters:
        `rate` - 播放速度，取值1~n（建议n<=5）
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### stop

          int stop(int reason)

      停止播放
      Parameters:
        `reason` -
        停止播放的原因
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### addToGroup

          int addToGroup(int group)

      多个播放器设为一组（数据流同步场景）
      Parameters:
        `group` -
      Returns:
        0: 调用成功 <0: 调用失败

    - #### setOnUserDefinedDataListener

          void setOnUserDefinedDataListener(IQHVCPlayerAdvanced.OnUserDefinedDataListener listener)

    - #### setOnPlayerNetStatsListener

          void setOnPlayerNetStatsListener(IQHVCPlayerAdvanced.OnPlayerNetStatsListener listener)

      流量统计信息回调(暂时只支持直播)
      Parameters:
        `listener` -

    - #### setOnAudioPCMListener

          void setOnAudioPCMListener(IQHVCPlayerAdvanced.OnAudioPCMListener listener)

      设置音频数据回调
      Parameters:
        `listener` -

    - #### setOnPacketListener

          void setOnPacketListener(IQHVCPlayerAdvanced.OnPacketListener listener)

      设置音频/视频数据回调
      Parameters:
        `listener` -

    - #### setOnSeiMetaListener

          void setOnSeiMetaListener(IQHVCPlayerAdvanced.OnSeiMetaListener listener)

      设置sei meta回调 注意需要设置: `#setDataSource( int, String, String, String, Map options)` 设置options.put(IQHVCPlayerAdvanced.KEY_OPTION_ENABLE_ANALYZE_SEI, Boolean.TRUE)
      Parameters:
        `listener` -

    - #### setOnCustomizeSeiMetaListener

          void setOnCustomizeSeiMetaListener(IQHVCPlayerAdvanced.OnCustomizeSeiMetaListener listener)

      设置自定义sei meta回调 注意需要设置: `#setDataSource( int, String, String, String, Map options)` 设置options.put(IQHVCPlayerAdvanced.KEY_OPTION_ENABLE_ANALYZE_SEI, Boolean.TRUE)
      Parameters:
        `listener` -

    - #### startRecorder

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

      开始录制

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

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

    - #### stopRecorder

          int stopRecorder()

      结束录制(异步接口)
      Returns:
        0: 调用成功 <0: 调用失败

    - #### setOnAudioVolumeListener

          int setOnAudioVolumeListener(IQHVCPlayerAdvanced.OnAudioVolumeListener listener,
                                       long period)

      设置音量回调(只支持直播) 收到INFO_LIVE_PLAY_START后调用

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

      Parameters:
        `listener` -
        `period` - 回调时间间隔
      Returns:
        `IQHVCPlayer.ERROR_OK` 其他：`Error`

    - #### switchResolution

          void switchResolution(int index,
                                IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)

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

    - #### switchResolutionStop

          int switchResolutionStop(java.lang.String reason)

      取消分辨率切换
      Parameters:
        `reason` - 取消切换原因
      Returns:
        0: 调用成功 <0: 调用失败

    - #### setResolutionAdapt

          int setResolutionAdapt(boolean isAdapt,
                                 IQHVCPlayerAdvanced.QHVCSwitchResolutionListener listener)

      自动切换分辨率
      Parameters:
        `isAdapt` - 是否根据网络状况自动切换分辨率
        `listener` - 状态回调
      Returns:
        0: 调用成功 <0: 调用失败

    - #### isSystemMediaPlayer

          boolean isSystemMediaPlayer()

      是否是系统播放器
      Returns:
        true 系统播放器，false 直播云播放器

    - #### getPropertyRotate

          int getPropertyRotate()

      获取视频的旋转属性
      Returns:
        视频的旋转角度

    - #### setFilterValues

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

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

    - #### setSurfaceRenderListener

          void setSurfaceRenderListener(IQHVCPlayerAdvanced.SurfaceRenderListener surfaceRenderListener)

      设置视频渲染高级接口，必须在`IQHVCPlayer.setDisplay(ILiveCloudDisplay)`前调用
      Parameters:
        `surfaceRenderListener` - 视频渲染高级接口

    - #### getCurrentStreamTime

          long getCurrentStreamTime()

      获取主播直播流的流时间

    - #### getLiveCurrentTimestamp

          long getLiveCurrentTimestamp()

      获取当前帧时间戳 单位：ms(毫秒)
      注: 目前只支持rtsp
      Returns:
        帧时间戳

    - #### writeStream

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

      向播放器写入帧数据(推数据模式，目前仅支持relay)
      Parameters:
        `playerId` -
        `type` - 数据包格式
        `nativeData` - 帧数据
        `size` - 数据长度
        `pts` -
        `dts` -
        `iskey` - 是否是关键帧
      Returns: