H5集成腾讯云TCPlayer(Web)

340 阅读3分钟

概述

Web 播放器是通过 HTML5 的 <video> 标签以及 Flash 实现视频播放。在浏览器不支持视频播放的情况下,实现了视频播放效果的多平台统一体验,并结合腾讯云点播视频服务,提供防盗链和播放 HLS 普通加密视频等功能。

集成指引

通过以下步骤,您就可以在网页上添加一个视频播放器。

步骤1:在页面中引入文件

播放器 SDK 支持 cdn 和 npm 两种集成方式:

1. 通过 cdn 集成

在本地的项目工程内新建 index.html 文件,html 页面内引入播放器样式文件与脚本文件:

 <link href="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.min.css" rel="stylesheet"/>
 <!--播放器脚本文件-->
 <script src="https://web.sdk.qcloud.com/player/tcplayer/release/v5.1.0/tcplayer.v5.1.0.min.js"></script>

建议在使用播放器 SDK 的时候自行部署资源,单击下载播放器资源。部署解压后的文件夹,不能调整文件夹里面的目录,避免资源互相引用异常。 如果您部署的地址为 aaa.xxx.ccc,在合适的地方引入播放器样式文件与脚本文件,自行部署情况下,需要手动引用资源包文件夹 libs 下面的依赖文件,否则会默认请求腾讯云 cdn 文件。

 <link href="aaa.xxx.ccc/tcplayer.min.css" rel="stylesheet"/>
 <!--如果需要在 Chrome 和 Firefox 等现代浏览器中通过 H5 播放 HLS 格式的视频,需要在 tcplayer.vx.x.x.min.js 之前引入 hls.min.x.xx.m.js。-->
 <script src="aaa.xxx.ccc/libs/hls.min.x.xx.m.js"></script>
 <!--播放器脚本文件-->
 <script src="aaa.xxx.ccc/tcplayer.vx.x.x.min.js"></script>

2. 通过 npm 集成

首先安装 tcplayer 的 npm 包:

npm install tcplayer.js

导入 SDK 和样式文件:

import TCPlayer from 'tcplayer.js';
import 'tcplayer.js/dist/tcplayer.min.css';

步骤2:放置播放器容器

在需要展示播放器的页面位置加入播放器容器。例如,在 index.html 中加入如下代码(容器 ID 以及宽高都可以自定义)。

<video id="player-container-id" width="414" height="270" preload="auto" playsinline webkit-playsinline>
</video>

步骤3:播放器初始化

页面初始化后,即可播放视频资源。播放器同时支持点播和直播两种播放场景,具体播放方式如下:

点播播放:播放器可以通过 FileID 播放腾讯云点播媒体资源,云点播具体流程请参见 使用播放器播放 文档。

直播播放:播放器通过传入 URL 地址,即可拉取直播音视频流进行直播播放。腾讯云直播 URL 生成方式可参见 自主拼装直播 URL

通过 URL 播放(直播、点播)

通过 FileID 播放(点播)

在页面初始化之后,调用播放器实例上的方法,将 URL 地址传入方法。

var player = TCPlayer('player-container-id', {
    sources: [{
      src: 'path/to/video',
    }],
    licenseUrl: 'https://license-url',
}); // player-container-id 为播放器容器 ID,必须与 html 中一致


// player.src(url); // url 播放地址

H5兼容三端(ios,Android,PC)

  const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
    this.player?.dispose()
    this.player = TCPlayer(id, {
      // sources: [{ src: 'https://1500005692.vod2.myqcloud.com/43843706vodtranscq1500005692/62656d94387702300542496289/v.f100240.m3u8' }],
      licenseUrl: 'https://license.vod2.myqcloud.com/license/v2/1256184516_1/v_cube.license',
    });
    if (isMobile) {
      if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {
        // Use native player for iOS
        this.player.src(data.url)
      } else if (/Android/i.test(navigator.userAgent)) {
        // Use TCPlayer for Android this.player.src('https://1500005692.vod2.myqcloud.com/43843706vodtranscq1500005692/62656d94387702300542496289/v.f100240.m3u8')
      }
    } else {
      // For non-mobile devices, use TCPlayer
      this.player.src('https://1500005692.vod2.myqcloud.com/43843706vodtranscq1500005692/62656d94387702300542496289/v.f100240.m3u8')
    }

H5集成tcplayer遇到的坑

腾讯云播放器没有提供Controls的显示/隐藏监听,需要自己添加监听事件

  // 监听控制栏状态
  findClassChange() {
    this.domClassObserver = new MutationObserver((mutations: any) => {
      if (mutations.length > 0) {
        const mutation = mutations.slice(-1)[0]
        if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
          if (mutation.target.classList.contains('vjs-user-inactive')) {
            this.showControls = false
          } else {
            this.showControls = true
          }
        }
      }
    })
    const videoDom = document.querySelector('.video-js')
    this.domClassObserver.observe(videoDom, { attributes: true, attributeOldValue: true, attributeFilter: ['class'] })
  }
}

参考

cloud.tencent.com/document/pr…

blog.csdn.net/gw6601/arti…

zhuanlan.zhihu.com/p/139315926