You need to enable JavaScript to run this app.
视频点播

视频点播

Copy page
Download PDF
进阶功能
播放 H.265 视频
Copy page
Download PDF
播放 H.265 视频

H.265 (HEVC) 是一种视频编码标准,相较于 H.264 (AVC),它能在相同画质下显著降低码率,节省带宽成本;或在同等带宽下提供更卓越的画质。然而,H.265 的硬件解码能力在不同设备上存在兼容性差异。播放器 SDK 通过内置的基于大数据分析的 H.265 硬解机型黑名单,能够智能地选择硬解或软解,有效避免播放失败、花屏、黑屏等问题,确保 H.265 视频的流畅播放。本文将指导您如何在应用中集成 H.265 视频的播放能力。

前提条件

  • 版本要求:本功能仅高级版和企业版支持。请确保您已购买相应版本的 License 并集成了正确的 SDK 依赖。详情请参见 License 管理

    warning

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

  • 准备 H.265 视频:根据您选择的播放模式,准备方式有所不同。

实现方式

DirectUrl 模式播放

DirectUrl 模式适用于播放任意来源(包括火山引擎视频点播服务或第三方 CDN)的 H.265 视频 URL。在这种模式下,您的应用需要自行承担更多的决策逻辑。

工作原理

由于播放器无法预知一个 URL 对应视频的编码格式,您的应用通常需要管理 H.264 和 H.265 两种格式的 URL,并根据设备能力进行选择。

  1. 客户端判断当前设备是否支持 H.265 硬解
  2. 客户端:根据判断结果,在 H.264 和 H.265 两个 URL 中选择一个进行播放。
    • 方案 1(推荐):客户端将设备能力上报给应用服务端,由服务端决策并返回一个最终的播放 URL。
    • 方案 2:服务端同时下发 H.264 和 H.265 两个 URL,由客户端在本地进行判断和选择。
  3. 客户端:确定 URL 后,设置给 SDK 即可,具体请见步骤 6:设置播放源中的 DirectUrl 播放源。

DirectUrl 模式播放 H.265 视频的整体流程具体如下图所示:
Image

Vid 模式播放

Vid 模式下播放 H.265 视频可以利用客户端的能力检测与服务端的智能调度,实现最简单、最可靠的 H.265 播放体验。

工作原理

  1. 客户端:在发起播放前,判断当前设备是否支持 H.265 硬解。
  2. 客户端:在构造 VidPlayAuthTokenSource 时,将期望的编码格式(H.265H.264)通过 setEncodeType 方法告知 SDK。
  3. 播放器 SDK:携带 encodeType 信息和 PlayAuthToken 向视频点播服务请求播放信息。
  4. 视频点播服务
    • 如果客户端请求 H.265 视频且该格式的视频存在,则返回 H.265 的播放地址。
    • 如果客户端请求 H.265 视频但该格式不存在,服务会自动降级,返回 H.264 格式的播放地址。

示例代码

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

// 1. 判断设备是否支持 H.265 硬解
TTVideoEngineEncodeType encodeType = TTVideoEngineH264;
if (TTVideoEngineCodecStrategyUtil.isDeviceSupporth265HardwareDecode) {
    encodeType = TTVideoEngineh265;
}

// 2. 准备基础播放参数
NSString *vid = @"your_video_id"; // 由您的业务服务端提供
NSString *playAuthToken = @"your_play_auth_token"; // 由您的业务服务端提供
TTVideoEngineResolutionType resolution = TTVideoEngineResolutionTypeFullHD; // 指定起播清晰度

// 3. 构造 Vid 播放源,并传入期望的 encodeType
// 前提:服务端在签发 playAuthToken 时未限制 Codec 类型。
TTVideoEngineVidSource *vidSource = [[TTVideoEngineVidSource alloc] initWithVid:vid playAuthToken:playAuthToken resolution:resolution encodeType:encodeType isDash:NO isHLS:NO];

// 4. 设置播放源并播放
[self.engine setVideoEngineVideoSource:vidSource];
[self.engine play];

参考信息

判断当前设备是否支持 H.265 硬解

通过以下方法检查当前设备是否在 H.265 硬解的支持列表中。

// 判断当前设备是否支持 H.265 硬解。YES:支持; NO:不支持
BOOL isSupport = TTVideoEngineCodecStrategyUtil.isDeviceSupporth265HardwareDecode;

确认解码器状态

在播放过程中,如果您需要确认当前实际使用的解码器信息,可以在 videoEngineReadyToPlay: 回调触发后调用以下方法:

// 确认当前播放是否正在使用硬件解码
BOOL isHardwareDecode = self.videoEngine.hardwareDecode;

// 获取当前播放视频的编码格式 ID
// 0: H.264
// 1: H.265
NSInteger videoCodecId = [[self.videoEngine getOptionBykey:VEKKEY(VEKKeyPlayerGetVideoCodecTypeId_NSInteger)] integerValue];
Last updated: 2025.11.12 17:16:14