Class ZegoMediaPlayer


  • public final class ZegoMediaPlayer
    extends java.lang.Object
    • Constructor Detail

      • ZegoMediaPlayer

        public ZegoMediaPlayer()
    • Method Detail

      • init

        @Deprecated
        public void init​(int playerType)
        Deprecated.
        请使用 init(int playerType, int playerIndex) 代替
        初始化播放器
        Parameters:
        playerType - 播放器类型,有 PlayerTypePlayer, PlayerTypeAux 两种
      • init

        public void init​(int playerType,
                         int playerIndex)
        初始化播放器
        Parameters:
        playerType - 播放器类型,有 PlayerTypePlayer, PlayerTypeAux 两种
        playerIndex - 播放器实例序号,详见 ZegoMediaPlayer.PlayerIndex
      • uninit

        public void uninit()
        释放播放器
      • setAudioPlayCallback

        public void setAudioPlayCallback​(IZegoMediaPlayerAudioPlayCallback callback)
        设置播放器音频数据回调,回调数据为 PCM
        Parameters:
        callback - 接收音频数据的回调实例 @see IZegoMediaPlayerAudioPlayCallback
      • setMediaSideInfoCallback

        public void setMediaSideInfoCallback​(IZegoMediaPlayerMediaSideInfoCallback callback)
        设置播放文件 SEI 信息回调
        Parameters:
        callback - 接收文件 SEI 信息的回调实例 @see IZegoMediaPlayerMediaSideInfoCallback
      • setMediaPlayerFileReader

        public void setMediaPlayerFileReader​(ZegoMediaPlayerFileReader reader)
        设置播放文件操做回调接口, 调用该接口后,内部播放视频时,进行的文件操作将会通过ZegoMediaPlayerFileReader接口 需要用户实现
        Parameters:
        reader -
        See Also:
        ZegoMediaPlayerFileReader
      • setBlockDataCallback

        public void setBlockDataCallback​(IZegoMediaPlayerBlockDataCallback callback,
                                         int blockSize)
        设置媒体播放器资源块数据回调
        Parameters:
        callback - 回调
        blockSize - 最小加密块数据的大小,OnBlockData 回调中的 size 为 blockSize 整数倍
      • start

        @Deprecated
        public void start​(java.lang.String path,
                          boolean repeat)
        Deprecated.
        请使用 start(String path, long startPosition) 代替,如果需要设置循环次数,使用 setLoopCount 接口
        开始播放
        Parameters:
        path - 媒体文件的路径
        repeat - 是否重复播放
      • start

        @Deprecated
        public void start​(java.lang.String path,
                          boolean repeat,
                          long startPosition)
        Deprecated.
        请使用 start(String path, long startPosition) 代替,如果需要设置循环次数,使用 setLoopCount 接口
        开始播放

        注意:当 startPosition 超过播放总时长,将从头开始播放

        Parameters:
        path - 媒体文件的路径
        repeat - 是否重复播放
        startPosition - 指定开始播放的进度,单位毫秒
      • start

        public void start​(java.lang.String path,
                          long startPosition)
        开始播放

        注意:
        当 startPosition 超过播放总时长,将从头开始播放
        调用 setLoopCount 接口设置循环播放次数

        Parameters:
        path - 媒体文件的路径
        startPosition - 指定开始播放的进度,单位毫秒
      • start

        public void start​(android.net.Uri uri,
                          long startPosition)
        开始播放

        注意:
        当 startPosition 超过播放总时长,将从头开始播放
        调用 setLoopCount 接口设置循环播放次数

        Parameters:
        uri - 媒体文件 Uri
        startPosition - 指定开始播放的进度,单位毫秒
      • start

        public void start​(java.nio.ByteBuffer data,
                          long startPosition)
        开始播放

        注意:
        媒体数据要使用 ByteBuffer 的 allocateDirect 模式
        当 startPosition 超过播放总时长,将从头开始播放
        调用 setLoopCount 接口设置循环播放次数

        Parameters:
        data - 媒体数据,要使用 allocateDirect 模式
        startPosition - 指定开始播放的进度,单位毫秒
      • startCopyrightedMusic

        public void startCopyrightedMusic​(java.lang.String resourceId,
                                          long startPosition)
        开始播放

        注意:
        当 startPosition 超过播放总时长,将从头开始播放
        调用 setLoopCount 接口设置循环播放次数

        Parameters:
        resourceId - 通过版权模块获取的资源 ID
        startPosition - 指定开始播放的进度,单位毫秒
      • stop

        public void stop()
        结束播放
      • pause

        public void pause()
        暂停播放
      • resume

        public void resume()
        恢复播放
      • seekTo

        public void seekTo​(long millisecond)
        设置指定的进度进行播放
        Parameters:
        millisecond - 指定的进度,单位毫秒
      • enableAccurateSeek

        public void enableAccurateSeek​(boolean enable)
        设置是否开启精准搜索

        注意:播放文件之前调用,即Start或Load前,播放过程中调用不起作用,但可能对下个文件的播放起作用.

        Parameters:
        enable - 是否开启
      • setAccurateSeekTimeout

        public void setAccurateSeekTimeout​(long timeoutInMS)
        设置精确搜索的超时时间

        注意:如果不设置, SDK 内部默认是设置 5000 毫秒

        Parameters:
        timeoutInMS - 超时时间, 单位毫秒. 有效值区间 [2000, 10000]
      • getDuration

        public long getDuration()
        获取整个文件的播放时长
        Returns:
        文件的播放时长,单位毫秒
      • getCurrentDuration

        public long getCurrentDuration()
        获取当前的播放时间
        Returns:
        当前的播放时间,单位毫秒
      • getCurrentRenderingDuration

        public long getCurrentRenderingDuration()
        获取当前的播放渲染时间
        Returns:
        当前的播放渲染时间,单位毫秒
      • setView

        public void setView​(java.lang.Object view)
        设置显示视频的view
        Parameters:
        view - 用于渲染视频的view, 推荐使用 TextureView, 也可以使用 SurfaceViewSurface
      • setVolume

        public void setVolume​(int volume)
        设置本地播放音量, 如果播放器设置了推流模式, 也会设置推流音量
        Parameters:
        volume - 音量,取值范围[0, 200],默认 60
      • setPlayVolume

        public void setPlayVolume​(int volume)
        设置本地播放音量
        Parameters:
        volume - 音量,取值范围[0, 200],默认 60
      • setPublishVolume

        public void setPublishVolume​(int volume)
        设置推流音量
        Parameters:
        volume - 音量,取值范围[0, 200],默认 60
      • getPlayVolume

        public int getPlayVolume()
        获取本地播放音量
      • getPublishVolume

        public int getPublishVolume()
        获取推流音量
      • setPlaySpeed

        public void setPlaySpeed​(float speed)
        设置本地播放倍速

        注意:
        在回调onPlayStart或onLoadComplete之后设置

        Parameters:
        speed - 倍速,取值范围[0.3, 4.0],默认 1.0
      • setAudioStream

        public long setAudioStream​(long streamIndex)
        设置播放媒体文件的音轨
        Parameters:
        streamIndex - 音轨序号,可以通过 getAudioStreamCount 接口获取音轨个数
      • setAudioPublishStream

        public void setAudioPublishStream​(long streamIndex)
        设置媒体文件需要推流的音轨

        注意:该接口需要通过 SetAudioTrackMode 开启多音轨模式下才生效

        Parameters:
        streamIndex - 音轨序号,可以通过 getAudioStreamCount 接口获取音轨个数
      • setAudioTrackMode

        public void setAudioTrackMode​(int mode)
        设置播放器的音轨模式

        注意:
        当指定多音轨模式时需要搭配 SetAudioPublishStream 一起使用,用于支持本地播放和推流分别使用不同的音轨
        仅在开始播放 start 前调用生效

        Parameters:
        mode - 音轨模式,参见 ZegoMediaPlayer.AudioTrackMode 定义
      • setPlayerType

        public void setPlayerType​(int playerType)
        设置播放器类型
        Parameters:
        playerType - PlayerTypePlayer, PlayerTypeAux
      • getAudioStreamCount

        public long getAudioStreamCount()
        获取音轨个数
        Returns:
        音轨个数
      • enableRepeatMode

        @Deprecated
        public void enableRepeatMode​(boolean enable)
        Deprecated.
        请使用 #setLoopCount 代替
        设置是否循环播放
        Parameters:
        enable - 是否循环播放
      • setLoopCount

        public void setLoopCount​(int loopCount)
        设置循环播放次数

        注意:默认是不循环播放

        Parameters:
        loopCount - 循环次数,-1 表示无限循环,0 表示不循环,大于 0 表示循环次数,实际播放次数为 (loopCount+1)
      • takeSnapshot

        public void takeSnapshot()
        获取当前播放视频的截图

        注意: 只有在调用 setView 设置了显示控件,以及播放状态的情况下,才能正常截图。

      • muteLocal

        public void muteLocal​(boolean mute)
        设置本地静默播放

        注意: 如果设置了 PlayerTypeAux 模式, 推出的流是有声音的

        Parameters:
        mute - 是否静默播放
      • load

        public void load​(java.lang.String path)
        预加载资源

        注意: 如果是视频, 会将首帧画面显示在显示控件上(通过 setView 设置的). 之后需要播放资源时请调用 resume 接口

        Parameters:
        path - 媒体文件的路径
      • load

        public void load​(android.net.Uri uri)
        预加载资源

        注意: 如果是视频, 会将首帧画面显示在显示控件上(通过 setView 设置的). 之后需要播放资源时请调用 resume 接口

        Parameters:
        uri - 媒体文件的路径 Uri
      • load

        public void load​(java.lang.String path,
                         long startPosition)
        预加载资源

        注意: 如果是视频, 会将首帧画面显示在显示控件上(通过 setView 设置的). 之后需要播放资源时请调用 resume 接口. 当 startPosition 超过播放总时长,将从头开始播放

        Parameters:
        path - 媒体文件的路径
        startPosition - 指定开始播放的进度,单位毫秒
      • load

        public void load​(android.net.Uri uri,
                         long startPosition)
        预加载资源

        注意: 如果是视频, 会将首帧画面显示在显示控件上(通过 setView 设置的). 之后需要播放资源时请调用 resume 接口. 当 startPosition 超过播放总时长,将从头开始播放

        Parameters:
        uri - 媒体文件的路径 Uri
        startPosition - 指定开始播放的进度,单位毫秒
      • load

        public void load​(java.nio.ByteBuffer data,
                         long startPosition)
        预加载资源

        注意:
        媒体数据要使用 ByteBuffer 的 allocateDirect 模式
        如果是视频, 会将首帧画面显示在显示控件上(通过 setView 设置的).
        之后需要播放资源时请调用 resume 接口.
        当 startPosition 超过播放总时长,将从头开始播放

        Parameters:
        data - 媒体数据,要使用 allocateDirect 模式
        startPosition - 指定开始播放的进度,单位毫秒
      • loadCopyrightedMusic

        public void loadCopyrightedMusic​(java.lang.String resourceId,
                                         long startPosition)
        预加载资源

        注意: 如果是视频, 会将首帧画面显示在显示控件上(通过 setView 设置的). 之后需要播放资源时请调用 resume 接口. 当 startPosition 超过播放总时长,将从头开始播放

        Parameters:
        resourceId - 通过版权模块获取的资源 ID
        startPosition - 指定开始播放的进度,单位毫秒
      • setProcessInterval

        public boolean setProcessInterval​(long interval)
        设置播放进度回调间隔。

        注意:设置 interval 大于 0 时,就会收到 onProcessInterval 回调。interval = 0 时,停止回调。回调不会严格按照设定的回调间隔值返回,而是以处理音频帧或者视频帧的频率来判断是否需要回调。

        Parameters:
        interval - 回调间隔,单位毫秒。有效值为大于等于 0。默认值为 0。
      • requireHWDecoder

        public boolean requireHWDecoder()
        设置使用硬件解码。

        注意:需要在加载媒体资源之前设置,即在 start 或者 load 之前。即使设置了使用硬件解码,引擎也会根据当前硬件情况决定是否使用。多次调用没有影响。

        Returns:
        返回 true 调用成功, false 调用失败
      • setViewMode

        public void setViewMode​(int mode)
        设置视频控件的显示模式
        Parameters:
        mode - 视频控件显示模式。 详见 ZegoMediaPlayer#PlayerViewMode
      • setBackgroundColor

        public void setBackgroundColor​(int color)
        设置播放的背景颜色
        Parameters:
        color - 颜色,取值为0x00RRGGBB
      • clearView

        public void clearView()
        清除播放控件播放结束后, 在控件上保留的最后一帧画面
      • setActiveAudioChannel

        public void setActiveAudioChannel​(int channel)
        设置播放声道
        Parameters:
        channel - 声道, 参见 ZegoMediaPlayer.AudioChannel 定义. 播放器初始化时默认是 ZegoMediaPlayer.AudioChannel.All
      • setAudioChannelKeyShift

        public void setAudioChannelKeyShift​(int channel,
                                            float value)
        设置声道音调
        Parameters:
        channel - 声道, 参见 ZegoMediaPlayer.AudioChannel 定义, 可选择设置左声道、右声道、左右声道,当只设置一个声道时,另一个声道保持原值
        value - 音调偏移值, 有效值范围 [-8.0, 8.0], 播放器初始化时默认是 0
      • setOnlineResourceCache

        public void setOnlineResourceCache​(int timeInMS,
                                           int sizeInByte)
        设置网络素材最大的缓存时长和缓存数据大小, 以先达到者为准

        注意: 在 start 或者 load 之前调用, 设置一次, 生命周期内一直有效. timeInMS 和 sizeInByte 不允许同时为 0. SDK 内部默认 timeInMS 为 5000, sizeInByte 为 15*1024*1024

        Parameters:
        timeInMS - 缓存最大时长, 单位 ms, 有效值为大于等于 2000, 如果填 0, 表示不限制
        sizeInByte - 缓存最大尺寸, 单位 byte, 有效值为大于等于 5000000, 如果填 0, 表示不限制
      • getOnlineResourceCacheStat

        public boolean getOnlineResourceCacheStat​(ZegoMediaPlayer.CacheStat stat)
        获取网络素材缓存队列的缓存数据可播放的时长和缓存数据大小
        Parameters:
        stat - 返回的缓存数据可播放的时长和缓存数据大小
        Returns:
        返回 true 调用成功, false 调用失败
      • setBufferThreshold

        public void setBufferThreshold​(int threshold)
        设置缓冲回调的阈值, 缓冲区可播放时长大于阈值时, 开始播放, 并回调 OnBufferEnd

        注意: 在 start 或者 load 之前调用, 设置一次, 生命周期内一直有效. SDK 默认值是 5000ms

        Parameters:
        threshold - 回调 OnBufferEnd 的阈值, 单位 ms
      • setLoadResourceTimeout

        public void setLoadResourceTimeout​(int timeout)
        设置加载资源的超时时间

        注意: 在 start 或者 load 之前设置, 设置一次, 生命周期内一直有效, 当打开文件超过设定超时时间,会失败并回调 onPlayError. , SDK 默认会一直等待

        Parameters:
        timeout - 超时时间, 单位 ms, 有效值为大于等于 1000
      • getMetaDataValue

        public java.lang.String getMetaDataValue​(java.lang.String key)
        通过键值获取保存在媒体文件中的元数据信息
        Parameters:
        key - 要获取元数据的键值
        Returns:
        指定键值对应的元数据信息。媒体文件未加载或元数据中没有指定的键值时,将返回空字符串。
      • setHttpHeaders

        public void setHttpHeaders​(java.util.Map<java.lang.String,​java.lang.String> headers)
        设置 http 网络资源的http headers
        Parameters:
        headers - http headers, 每一个 key 和 value 不大于 512 字节
      • updatePosition

        public void updatePosition​(float[] position)
        更新媒体播放器(音频源)位置
        Parameters:
        position - 用户的三维空间坐标

        注意:
        1. 此接口需要与 RangeAudio/RangeScene 模块配合使用,RangeAudio/RangeScene 模块开启 3D 音效后,此接口才能调用成功。
        2. 此接口需要在 init 后,uninit 前调用。

      • setPlayMediaStreamType

        public void setPlayMediaStreamType​(int type)
        设置媒体播放器播放的媒体流类型,用于仅播放音频流或者视频流的场景
        Parameters:
        type - 媒体流类型,详见 ZegoConstants.ZegoMediaStreamType