本文指导您如何使用 Web 播放器 SDK 播放 HLS 格式的视频,包括普通 HLS 视频和 HLS 标准加密视频。
配置域名跨域 (CORS):播放 HLS 视频时,您必须为播放域名配置正确的 CORS 相关的 HTTP 响应头,以允许 Web 页面获取 M3U8 和 TS 文件。具体操作步骤请见配置 HTTP 响应头。需要的 header 如下:
响应头名称 | 响应头值 |
|---|---|
Access-Control-Allow-Origin |
|
Access-Control-Allow-Methods |
|
Access-Control-Expose-Headers |
|
使用 HTTPS 协议:在 HTTPS 页面上播放视频时,必须使用 HTTPS 协议的播放链接,并确保您的播放域名已配置有效的 SSL 证书。如果是 Vid 模式播放,在服务端生成临时播放凭证 playAuthToken 时需要指定 Ssl 为 1。以 Go SDK 生成 playAuthToken 为例:
query := &request.VodGetPlayInfoRequest{ Vid: vid, Format: "hls", FileType: "video", Ssl: "1", }
说明
如果项目前期测试时没有 SSL 证书,则需要在播放器实例化 options 参数的getVideoByToken 配置里添加 reqParams: { Ssl: 0 }。
您可以通过 DirectUrl 模式或 Vid 模式来播放普通的、未加密的 HLS 视频。
直接传入 HLS 视频的 M3U8 文件地址,并设置 streamType为 hls。
const playerSdk = new VePlayer({ id: 'player-container', width: 600, height: 360, streamType: 'hls', url: 'https://your-domain/your-video.m3u8', codec: 'h264', vodLogOpts: { vtype: 'HLS', tag: '普通视频', line_app_id: 123456//(必选)number 类型,视频点播应用 ID。可在视频点播控制台 > 播放器 SDK > 应用管理页面获取。 line_user_id: 123456, //(必选)用户 ID, String 或者 number 类型。对应于单点追查功能的设备 ID 维度。 } });
通过 Vid 和 playAuthToken 进行播放。您需要在服务端生成 playAuthToken 时,指定 Format 为 hls。服务端生成临时播放 Token 时需要指定 FileType、 Format 和 Codec,请确保对应 Vid 的视频有转出相应格式和编码的视频,否则会按照服务端的策略下发其他格式协议的视频。播放 H.265 编码的 HLS 视频需要指定 Format 为 hls,指定 Codec 为 H265。Format 和 Codec 支持的值及其默认值见获取播放地址接口的请求参数。服务端生成 Token(Go 示例):
query := &request.VodGetPlayInfoRequest{ Vid: vid, Format: "hls", Codec: "H265", FileType: "video", Ssl: "1", // 建议在 HTTPS 页面开启 }
客户端初始化播放器:
const playerSdk = new VePlayer({ id: 'player-container', width: 600, height: 360, getVideoByToken: { playAuthToken: 'your_play_auth_token' }, vodLogOpts: { vtype: 'HLS', tag: '普通视频', line_app_id: 123456, //(必选)number 类型,视频点播应用 ID。可在视频点播控制台 > 播放器 SDK > 应用管理页面获取。 line_user_id: 123456, //(必选)用户 ID, String 或者 number 类型。对应于单点追查功能的设备 ID 维度。 } });
HLS 标准加密 (AES-128) 是一种通用的内容保护方案。播放此类视频的核心是让播放器能够获取到正确的解密密钥。本章节指导您如何使用 Web 播放器 SDK 播放 HLS 标准加密视频。
若您的加密视频是通过视频点播的媒体处理服务生成的,播放器 SDK 可以与云端服务深度协同,提供便捷、安全的播放体验。在播放前,您必须完成以下准备工作:
详细步骤请参考HLS 标准加密(新版)文档。完成准备工作后,您可以通过 Vid 模式(推荐) 或 DirectUrl 模式来播放加密视频。
此方式通过 Vid 和 playAuthToken 进行播放,流程更安全,并支持自定义鉴权参数。
服务端生成 PlayAuthToken:您的应用服务端需要调用 GetPlayInfo 接口生成 playAuthToken。在调用时,必须将 FileType 参数设置为 standard_evideo(加密视频)或 standard_eaudio(加密音频)。
// Go SDK 示例 query := &request.VodGetPlayInfoRequest{ Vid: vid, Format: "hls", Codec: "H265", FileType: "standard_evideo", // 关键参数:指定获取加密文件 Ssl: "1", // 建议在 HTTPS 页面开启 }
客户端初始化播放器:在 getVideoByToken 配置项中,除了传入 playAuthToken,若您配置 HLS 标准加密改写,则还可通过 urlQueryParams 参数,为播放器请求 M3U8 文件的 URL 添加自定义鉴权参数。
const playerSdk = new VePlayer({ id: 'player-container', width: 600, height: 360, getVideoByToken: { urlQueryParams: { hlsSign: 'your_app_auth_token' }, playAuthToken: 'your_play_auth_token_for_encrypted_video', }, // ... 其他配置 });
播放器 SDK 将自动处理后续的播放信息获取、密钥请求和解密播放。
此方式需要您在服务端手动获取完整的播放地址,然后再交给客户端播放。
FileType 参数设置为 standard_evideo 或 standard_eaudio。若您的 HLS 标准加密视频由第三方服务生成,只要其符合 HLS 规范,同样可以使用 Web 播放器 SDK 进行播放。您只需通过 DirectUrl 模式,将第三方提供的 M3U8 播放地址直接传入播放器即可。播放器端的配置与播放普通 HLS 视频完全一致。在这种模式下,播放器会直接请求 M3U8 文件中 #EXT-X-KEY 标签指定的密钥 URI。您需要确保该 URI 是公网可访问的,并且相关的跨域策略 (CORS) 已正确配置。
enableHlsMSE: true。