播放控制

更新时间: 2021/11/04 13:58:02

切换播放地址

在播放过程中,用户可以直接调用 switchContentUrl(url)来切换播放地址。

API原型

    /**
     * 播放过程中切换播放地址,第一次播放不能调用该接口,仅支持当前播放结束切换到下一个视频,或者播放过程中切换下一个视频
     *
     * @param url 播放地址
     */
    public abstract void switchContentUrl(String url);

参数说明

参数 类型 说明
url String 播放地址

示例

String url = "http://xxx.xxx.xxx.xxx/xxx.flv";
mLivePlayer.switchContentUrl(url);

该接口仅限于播放过程中切换播放地址或播放完成后播放下一个视频,第一次播放时不能调用该接口。

切换播放地址,同时可以配置解密信息以及本地缓存设置

在播放过程中,用户可以直接调用 switchContentUrl(String url, NEDataSourceConfig config) 来切换播放地址, 并同时配置解密信息及本地缓存设置。

该接口从 v2.1.0 版本开始加入。

API原型

     /**
     * 播放过程中切换播放地址,第一次播放不能调用该接口,仅支持当前播放结束切换到下一个视频,或者播放过程中切换下一个视频
     * @param url 播放地址
     * @param config 播放配置项(配置缓存本地信息和解密信息)
     */
    public abstract void switchContentUrl(String url, NEDataSourceConfig config);

参数说明

参数 类型 说明
url String 播放地址
config NEDataSourceConfig 播放配置项(配置缓存本地信息和解密信息)

示例


String url = "http://xxx.xxx.xxx.xxx/xxx.flv";
NEDataSourceConfig dataSourceConfig = new NEDataSourceConfig();
// 配置解密信息
if (decryptionCode == DecryptionConfigCode.CODE_DECRYPTION_INFO) {
   dataSourceConfig.decryptionConfig = new NEDecryptionConfig(transferToken, accid, appKey, token);
} else if (decryptionCode == DecryptionConfigCode.CODE_DECRYPTION_KEY) {
   dataSourceConfig.decryptionConfig = new NEDecryptionConfig(flvKey, flvKeyLen);
}
// 配置本地缓存
if(enableCache) {
    dataSourceConfig.cacheConfig = new NECacheConfig(true, cachePath);
}
// 调用switch接口
mLivePlayer.switchContentUrl(url, dataSourceConfig);

该接口仅限于播放过程中切换播放地址或播放完成后播放下一个视频,第一次播放时不能调用该接口。

解密信息切换播放地址

在播放过程中,用户可以直接调用 switchContentUrlWithDecryptionToken 来使用解密信息切换加密播放地址。

该接口从 v2.1.0 版本开始被标记为废弃,请使用 switchContentUrl(String url, NEDataSourceConfig config) 接口代替。

API原型

    /**
     * 播放过程中使用解密信息切换加密播放地址,第一次播放不能调用该接口,仅支持当前播放结束切换到下一个视频,或者播放过程中切换下一个视频
     * 获取密钥并对密钥做相关的校验,如果校验正确那么自动进行prepareAsync拉流操作,校验结果OnDecryptionListener中进行回调
     * 该接口不能与switchContentUrlWithDecryptionKey、switchContentUrl同时使用
     *
     * @param url           播放地址
     * @param transferToken 获取密钥所需的令牌
     * @param accid         视频云用户创建的其子用户id
     * @param token         视频云用户子用户的token
     * @param appKey        开发者平台分配的AppKey
     * @param listener      密钥校验结果的回调,校验正确才能继续拉流操作
     */
    public abstract void switchContentUrlWithDecryptionToken(String url, String transferToken, String accid, String token, String appKey, OnDecryptionListener listener);

参数说明

参数 类型 说明
transferToken String 获取密钥所需的令牌
accid String 用户创建的其子用户id
token String 用户子用户的token
appKey String 开发者平台分配的AppKey
listener OnDecryptionListener 密钥校验结果的回调

示例

String url = "http://xxx.xxx.xxx.xxx/xxx.flv";
String transferToken = "xxx";
String accid = "xxx";
String appKey = "xxx";
String token = "xxx";
mLivePlayer.switchContentUrlWithDecryptionToken(url, transferToken, accid, token, appKey, mDecryptionListener);

该接口仅限于播放过程中切换播放地址或播放完成后播放下一个视频,第一次播放时不能调用该接口。

截图

在软件解码的条件下,SDK 支持截图功能,可以在 VideoView 中调用 getSnapshot(bitmap) 接口来实现截图功能。截图结果以 bitmap 格式返回,开发者可根据自己的需求保存成 jpg 或 png 格式,并保存到指定位置。

API原型

    /**
     * 截图,仅在软件解码条件下支持,硬件解码不支持, 需要在收到onPrepare的通知后调用
     *
     * @param bitmap 截图结果,以Bitmap格式保存,可以转成jpg格式或png格式
     * @return true: 截图成功  false: 截图失败
     */
    public abstract boolean getSnapshot(Bitmap bitmap);

参数说明

参数 类型 说明
bitmap Bitmap 截图结果,以Bitmap格式保存,可以转成jpg格式或png格式

示例


mLivePlayer.getSnapshot(bitmap)

切换音轨

播放器从 v2.0.0 开始支持多音轨切换功能,可以实现视频内嵌多音轨间的无缝切换。

相关接口及说明

    /**
     * 获取当前播放媒体的音轨信息,需要在prepare完成后调用
     *
     * @return  音轨信息数组或null, 数组大小代表音轨数目
     */
    public abstract NEAudioTrackInfo[] getAudioTracksInfo();

    /**
     * 获取当前选择的音轨序号,需要在prepare完成后调用
     *
     * @return 当前的音轨序号,或者-1
     */
    public abstract int getSelectedAudioTrack();

    /**
     * 切换音轨,需要在prepare完成后调用。
     *
     * @param index 需要切换的音轨序号,音轨数量通过 getSelectedAudioTrack 返回的数组大小确定。
     * @return 成功返回0,否则表示切换失败。
     */
    public abstract int setSelectedAudioTrack(int index);

音轨信息类 NEAudioTrackInfo 中可获取的内容

    /**
    * 获取音轨的编码格式
    */
    public String getCodecName();
    
    /**
    * 获取音轨的采样率
    */
    public int getSampleRate();
    
    /**
    * 获取音轨的声道数
    */
    public int getChannels();
    
    /**
    * 获取音轨的码率
    */
    public long getBitrate();
    
    /**
    * 获取音轨的语言信息
    */
    public String getLanguage();
    
    /**
    * 获取音轨的名称
    */
    public String getTitle();

调用示例

// 获取当前播放媒体的音轨信息
mAudioTracksInfo = player.getAudioTracksInfo();
// 获取当前播放的音轨序号
mSelectedAudioTrack = player.getSelectedAudioTrack();

// 设置用户选择的音轨
if (audioTrackToSelect < mAudioTracksInfo.length) {
    player.setSelectedAudioTrack(audioTrackToSelect);
}

获取播放实时数据

通过获取播放实时数据接口可以获取实时的播放数据,方便应用层获取到数据进行监控和上报。

API原型

    /**
     * 获取播放实时数据
     * 用于应用层监控播放器播放情况
     * @return 实时数据结果
     */
    public abstract NEMediaRealTimeInfo getMediaRealTimeInfo() ;    

参数说明

NEMediaRealTimeInfo类型说明:

参数 类型 说明
videoReceiveBitRate int 视频下载码率
audioReceiveBitrate int 音频下载码率
videoReceiveFrameRate int 视频原下载帧率
videoPlayFrameRate int 视频播放帧率
videoCacheDuration long 视频缓冲区数据时长
audioCacheDuration long 音频缓冲区数据时长
videoCacheBytes long 视频缓冲区数据大小
audioCacheBytes long 音频缓冲区数据大小
avPtsDiff float 音视频同步时的时间差

示例


NEMediaRealTimeInfo statisticsData = mLivePlayer.getMediaRealTimeInfo();

此文档是否对你有帮助?
有帮助
去反馈
  • 切换播放地址
  • API原型
  • 参数说明
  • 示例
  • 切换播放地址,同时可以配置解密信息以及本地缓存设置
  • API原型
  • 参数说明
  • 示例
  • 解密信息切换播放地址
  • API原型
  • 参数说明
  • 示例
  • 截图
  • API原型
  • 参数说明
  • 示例
  • 切换音轨
  • 相关接口及说明
  • 调用示例
  • 获取播放实时数据
  • API原型
  • 参数说明
  • 示例