You need to enable JavaScript to run this app.
导航
播放 H.265 视频
最近更新时间:2024.08.21 14:55:17首次发布时间:2021.04.14 14:20:55

H.265(HEVC)是一种视频编码标准,相比于之前的标准 H.264(AVC),H.265 能够以更高的压缩效率提供相同质量的视频,或者在相同的比特率下提供更好的图像质量。然而,H.265 存在设备兼容性问题。点播 SDK 包含了基于大数据沉淀的 H.265 硬解机型黑名单,可根据机型画像灵活切换软硬解策略,有效避免播放失败、花屏、黑屏等问题。本文为您介绍使用点播 SDK 时如何正确播放 H.265 视频。

前提条件

该功能仅高级版和企业版支持。请确保您已购买高级版或企业版的 License 并添加高级版 SDK 依赖,详见 License 包管理

注意

自 1.36.1 版本起,H.265 硬解优化由增值服务调整至高级版和企业版。如您集成 1.36.1 之前的版本且想要使用此功能,请升级至最新版本。

确认当前设备是否支持 H.265 硬解

通过以下示例代码确认当前设备是否支持 H.265 硬解。

// 确认该机型是否支持 H.265 硬解。true:支持; false:不支持
boolean isSupportH265HardwareDecode = CodecStrategy.Decoder.isSupport(CodecStrategy.Dimension.h265_HARDWARE);

// 确认当前是否使用硬解。调用时机:在 onPrepared 回调后调用
boolean isHardwareDecode = videoEngine.getIntOption(TTVideoEngine.PLAYER_OPTION_GET_VIDEO_CODEC_TYPE) == TTVideoEngine.PLAY_CODEC_NAME_AN_HW;

// 获取当前播放源 code 类型。调用时机:在 onPrepared 回调后调用
// H264: 0
// H265: 1
int videoCodecId = videoEngine.getIntOption(TTVideoEngine.PLAYER_OPTION_GET_VIDEO_CODEC_ID); 

DirectUrl 模式播放 H.265 视频

DirectUrl 模式播放 H.265 视频的整体流程具体如下图所示:
图片
应用客户端向服务端请求播放地址时,需携带是否支持 H.265 信息。服务端根据此信息返回视频播放地址,即支持时返回 H.265 播放地址,不支持时返回 H.264 播放地址。客户端获取到播放地址后,设置给 SDK 即可,具体请见快速开始 - 设置播放源

说明

应用服务端也可同时下发 H.264 和 H.265 播放源,客户端再根据确认结果播放相应视频。

Vid 模式播放 H.265 视频

服务端处理

客户端实现

参考以下示例代码在 Vid 模式下播放 H.265 视频:

// 1. 确认该机型是否支持 H.265 硬解
final String encodeType;
if (CodecStrategy.Decoder.isSupport(CodecStrategy.Dimension.h265_HARDWARE)) {
    encodeType = TTVideoEngine.CODEC_TYPE_h265;
} else {
    encodeType = TTVideoEngine.CODEC_TYPE_H264;
}

// 2. 构建 vid 播放源,传入 encodeType 类型
StrategySource vidSource = new VidPlayAuthTokenSource.Builder()
        .setVid("your video id") // 应用服务端下发
        .setPlayAuthToken("your video id's play auth token") // 应用服务端下发
        // 设置 encodeType 类型,不传则使用默认值 h264
        // 播放器请求视频播放地址时,若 H265 资源不存在,会兜底下发 H264 播放
        .setEncodeType(encodeType)
        .build();

// 3. 设置播放源
ttVideoEngine.setStrategySource(vidSource);

// 4. 播放
ttVideoEngine.play()