You need to enable JavaScript to run this app.
导航
进阶功能
最近更新时间:2024.09.19 17:09:15首次发布时间:2021.05.17 17:30:40

本文为您介绍如何实现 VePlayer 提供的进阶功能。

播放 HLS 标准加密视频

VePlayer 可播放由视频点播媒体处理服务生成的 HLS 标准加密视频,以满足用户对版权视频安全播放的需求。

兼容性说明

系统/浏览器

说明

PC Chrome

支持 34 以上版本。

PC Edge

部分支持 Windows 10 及以上。

移动端 iOS

部分支持 iOS 10 及以上系统。

注意

不支持 iOS 11.2 - 11.4 的系统。

移动端 Android

部分支持 Android 5 及以上系统。

注意

不支持播放器被劫持环境,如 UC 浏览器、QQ 浏览器以及部分手机厂家自带的浏览器(例如,VIVO)。

已知限制

VePlayer 播放 HLS 标准加密视频存在以下已知限制:

  • 对于移动端 Android 系统,不支持在 UC 浏览器、QQ 浏览器以及部分手机厂商(如 VIVO)自带浏览器等播放器被劫持环境中使用。
  • 对于移动端 iOS 系统,不支持 11.2 - 11.4 的版本(国内影响范围 0.65% 以内)。

对于不支持的浏览器环境,建议您进行风险评估,减少在这类环境下加密视频内容的投放或引导用户跳转至 App 端播放。

实现方式

在播放视频之前,您的应用服务端需要下发 HLS 标准加密 Token 给应用客户端用于解密。视频点播服务端 SDK 提供接口用于签发 HLS 标准加密 Token,详见以下文档:

VePlayer 支持通过 Vid 和 DirectUrl 两种模式播放 HLS 标准加密视频,具体说明如下:

通过 Vid 模式播放时,您需要设置 getVideoByToken 参数传入 playAuthTokenkeyToken。具体参数介绍请见 IPlayAuthTokenConfig。示例代码如下:

const playerSdk = new VePlayer({
  id: 'mse',
  width: 800,
  height: 500,
  getVideoByToken: {
    playAuthToken: 'playAuthToken',
    keyToken: 'keyToken'
  }
});

切换视频

如想在不销毁播放器的情况下更换视频源,可调用播放器实例的 playNext 方法。Vid 和 DirectUrl 两种模式均支持通过这种方式切换视频。

Vid+PlayAuthToken 模式下切换视频的示例代码如下:

playerSdk.playNext({
  getVideoByToken: {
    playAuthToken: 'new playAuthToken', // 新的playAuthToken
    keyToken: 'new keyToken' // 新的keyToken
  }
});

        

播放私有加密视频

火山引擎视频点播的私有加密方案采用火山引擎自研加密算法,安全级别高,能够便捷、高效、安全地保护您的音视频版权。更多信息,请见火山引擎私有加密方案介绍

兼容性说明

VePlayer 支持播放 HLS、MP4 和 DASH 格式的私有加密视频。具体兼容性说明如下表所示。

系统/浏览器

说明

PC Chrome

支持 34 以上版本的 HLS、MP4、DASH 的格式/协议。

PC Edge

支持 Windows 10 及以上系统的 HLS、MP4、DASH 的格式/协议。

移动端 iOS

部分支持 iOS 10 及以上系统,仅支持 HLS 协议。

注意

  • 不支持 iOS 11.2 ~ 11.4 的系统。
  • 由于 iOS 系统的浏览器缺少 MSE 等必要 API,无法支持 MP4 和 DASH 格式/协议。

移动端 Android

部分支持 Android 5 及以上系统,支持 HLS、MP4、DASH 的格式/协议。

注意

不支持播放器被劫持环境,如 UC 浏览器、QQ 浏览器以及部分手机厂家自带的浏览器(例如,VIVO)。

实现方式

在播放私有加密视频之前,您需要进行以下操作:

VePlayer 仅支持通过 Vid 模式播放私有加密视频。您需要在实例化播放器时传入 unionIdgetVideoByToken.playAuthTokengetVideoByToken.getDrmAuthToken 参数。具体参数说明,请见 IPlayerConfig。示例代码如下:

const playerSdk = new VePlayer({
    id: 'mse',
    width: 640,
    height: 360,
    // 唯一 ID。您自行设置,需要保证每一个用户的 unionId 是唯一的,没有其他格式限制。SDK 会使用这个 unionId 生成用于二次加密密钥的 unionInfo,有效时长为 30 秒
    unionId: 'veplayer_demo',
    getVideoByToken: {
      // 从应用服务端获取
      playAuthToken: '加密视频的 playAuthToken',
      // 从应用服务端获取私有加密 Token 回调
      // SDK 内部自行通过 playAuthToken 从点播服务获取到 playAuthId
      getDrmAuthToken: (playAuthIds, vid, unionInfo) => {
        // SDK 内部携带 playAuthId、vid、unionInfo 向应用服务端请求获取私有加密 Token
        const request = window.fetch(`http://video-service.demo.com/api/GetDrmKeyToken/?kid=${encodeURIComponent(playAuthIds)}&vid=${vid}&uid=${unionInfo}`);
        return request.then(res => res.json()).then(data => data.result);
      }
    },
  });

注意

播放私有加密视频时,如需切换视频,您需要重新创建播放器。

播放 DASH 视频

应用服务端下发指定 DASH 格式的 PlayAuthToken,即可快速实现 DASH 视频的播放。如果是指定为加密的 DASH 视频,也能按照以下示例代码快速实现 DASH 格式的加密视频播放。

const playerSdk = new VePlayer({
  id: 'mse',
  width: 800,
  height: 500,
  streamType: 'dash',
  getVideoByToken: {
    playAuthToken: '指定DASH格式且为加密视频的playAuthToken'
  }
});

面对一些灵活的需求场景时,您可自行获取 DASH 的播放信息,并设置 VePlayer 的 DASH 播放配置。具体参数介绍请见 IDashPluginConfig。示例代码如下:

const Service = window.VePlayer.Service;

const playAuthToken = '指定DASH格式且为加密视频的playAuthToken';
Service.url(playAuthToken, '//vod.volcengineapi.com').then((res) => {
  // 业务侧处理DASH的相关配置
  const playerSdk = new VePlayer({
    id: 'mse',
    lang: 'zh',
    width: 800,
    height: 500,
    DASHPlugin: {
      vid: res.Vid,
      playInfoType: 'TOP',
      getLicenseUrl: '//i.snssdk.com/video/drm/v1/play_licenses',
      definitionText: { '360p': '流畅 360p', '480p': '清晰 480p', '720p': '高清 720p', '1080p': '超高清 1080p' },
      defaultDefinition: '360p',
      preloadTime: 180,
      defaultFormat: 'dash',
      dashOpts: { Data: res }
    }
  });
});

播放 H.265 视频

H.265 编码格式支持更高的压缩效率,相同的清晰度下,能够节省码率 40%,在保证画质的条件下,达到节省带宽流量的目的。VePlayer 支持 H.265 视频编码格式,能够为您节省流量。

说明

移动端不推荐使用 DASH 进行播放,更推荐兼容性比较好的 HLS 和 MP4 格式。

兼容性说明

系统/浏览器

说明

PC Chrome

支持 34 以上版本。

PC Edge

支持 Windows 10 及以上。

PC Safari

支持 Safari 13 及以上。

移动端 iOS

仅支持 iOS 11 及以上。

注意

播放 HLS 视频时,封装格式必须是 fMP4。如需通过视频点播转码服务生成 fMP4 的 HLS 视频,请提交工单联系技术支持。

移动端 Android

部分支持 Android 5 及以上。

注意

不支持播放器被劫持环境,如 UC 浏览器、QQ 浏览器。

实现方式

在不支持 H.265 的浏览器环境下设置 enableH265Degradetrue,当播放 H.265 视频时可以 H.265 兼容模式进行适配播放,代码示例如下所示。

const playerSdk = new VePlayer({
    id: 'video',
    width: 800,
    height: 500,
    url: 'xx265.mp4',
    enableH265Degrade: true, // 开启 H.265 兼容模式
    codec: 'h265' // 视频编码格式
});

说明

如果开启了 H.265 兼容模式,且以 URL 形式播放,推荐提供视频的编码格式 codec,否则 VePlayer 会拉取码流进行编码格式自动检测,这将会消耗一定流量(约 300 kb),并延缓起播速度(约 0.5 秒)。

预加载

VePlayer 支持视频资源预加载高级功能。您可手动执行预加载,或在 Feed 流视频播放场景中自动执行预加载,降低首帧耗时,优化起播体验。在视频起播阶段直接使用预加载缓冲数据的具体效果如下图所示:
图片

注意

初始化预加载模块

调用 VePlayer.prepare 初始化预加载模块:

VePlayer.prepare({
  appId: number; // 视频点播应用 ID。可在视频点播控制台 - 点播 SDK - 应用管理页面获取。
  strategies: {
     preload: boolean | IPreloadConfig; // 开启预加载高级能力,可设置 boolean 值直接使用默认配置,或通过 IPreloadConfig 自行配置预加载初始参数
  }
})

图片