H.265 (HEVC) 是一种视频编码标准,相比于之前的标准 H.264 (AVC),H.265 能够以更高的压缩效率提供相同质量的视频,或者在相同的比特率下提供更好的图像质量。然而,H.265 存在设备兼容性问题。播放器 SDK 包含基于大数据沉淀的 H.265 硬解机型黑名单,可帮助应用判断 H.265 硬解支持情况,并据此选择 H.265 或 H.264 播放源,有效避免播放失败、花屏、黑屏等问题。本文为您介绍如何通过播放器 SDK 播放 H.265 视频。
注意
该功能仅高级版支持。请确保您已购买高级版的 License,详见播放器 License。
示例中的 <YOUR_VID> 为已上传视频的 ID,可在视频点播控制台媒资列表获取;<YOUR_PLAY_AUTH_TOKEN> 由业务服务端通过服务端 SDK 签发临时播放 Token生成并下发,签发时不要限制 Codec。DirectUrl 示例中的两个 URL 占位符应替换为同一视频的 H.265 和 H.264 播放地址,可由业务服务端调用 GetPlayInfo 获取。
void vidPlay() async { String vid = "<YOUR_VID>"; String playAuthToken = "<YOUR_PLAY_AUTH_TOKEN>"; TTVideoEngineResolutionType? resolutionType = TTVideoEngineResolutionType.TTVideoEngineResolutionTypeHD; TTVideoEngineEncodeType encodeType = TTVideoEngineEncodeType.h264; // 判断当前设备是否支持 H.265,支持则请求 H.265 播放源 var enableH265 = await FlutterTTSDKManager.isSupportH265HardwareDecode(); if (!(enableH265 == null || !enableH265)) { encodeType = TTVideoEngineEncodeType.h265; } // 构建播放源 TTVideoEngineVidSource source = TTVideoEngineVidSource.init( vid: vid, playAuthToken: playAuthToken, resolution: resolutionType, encodeType: encodeType); // 设置播放源 await _player?.setVidSource(source); // 开始播放 await _player?.play(); }
void urlPlay() async { final supportH265 = await FlutterTTSDKManager.isSupportH265HardwareDecode(); String url = supportH265 == true ? "<YOUR_H265_VIDEO_URL>" : "<YOUR_H264_VIDEO_URL>"; String cacheKey = "cache key"; // 构建播放源 TTVideoEngineUrlSource source = TTVideoEngineUrlSource.initWithURL(url, cacheKey); // 设置播放源 await _player?.setUrlSource(source); // 开始播放 await _player?.play(); }