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 硬解。YES:支持; NO:不支持
TTVideoEngineCodecStrategyUtil.isDeviceSupporth265HardwareDecode

// 确认当前是否使用硬解。调用时机:在 onPrepared 回调后调用
self.videoEngine.hardwareDecode

// 获取当前播放源 code 类型。调用时机:在 onPrepared 回调后调用
// H264: 0
// H265: 1
NSInteger videoCodecId = [[self.videoEngine getOptionBykey:VEKKEY(VEKGetKeyPlayerVideoCodecId_NSInteger)] integerValue];

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 硬解
TTVideoEngineEncodeType encodeType = nil;
if (TTVideoEngineCodecStrategyUtil.isDeviceSupporth265HardwareDecode) {
    encodeType = TTVideoEngineh265;
} else {
    encodeType = TTVideoEngineH264;
}

// vid 方式播放时需同时设置 playAuthToken 和 resolution
NSString *vid = @"vid"; // 应用服务端下发
NSString *playAuthToken = @"play auth token"; // 应用服务端下发
TTVideoEngineResolutionType resolution = TTVideoEngineResolutionTypeFullHD; // 指定视频播放分辨率档位

// 2. 构建 vid 播放源,传入 encodeType 类型 
TTVideoEngineVidSource *vidSource = [[TTVideoEngineVidSource alloc] initWithVid:vid playAuthToken:playAuthToken resolution:resolution encodeType:encodeType isDash:NO isHLS:NO];

// 3. 设置播放源
[self.engine setVideoEngineVideoSource:vidSource];

// 4. 播放
[self.engine play];