一. 实践步骤

1. 准备您的 腾讯云COS 视频文件链接,您需要:

1.1 创建一个存储桶;

1.2 上传对象;

1.3 在对象信息详情里复制对象地址;

注意:

目前腾讯云有COS特惠活动,新人1元起

2. 在页面中引入播放器样式文件与脚本文件:

<!--播放器样式文件-->
<link href="https://web.sdk.qcloud.com/player/tcplayer/release/v4.2.2/tcplayer.min.css" rel="stylesheet"/>
<!--如果需要在 Chrome 和 Firefox 等现代浏览器中通过 H5 播放 HLS 格式的视频,需要在 tcplayer.v4.2.2.min.js 之前引入 hls.min.0.13.2m.js。-->
<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.2.2/libs/hls.min.0.13.2m.js"></script>
<!--播放器脚本文件-->
<script src="https://web.sdk.qcloud.com/player/tcplayer/release/v4.2.2/tcplayer.v4.2.2.min.js"></script>

建议在正式使用播放器 SDK 时,自行部署以上相关静态资(https://web.sdk.qcloud.com/player/tcplayer/release/v4.2.2/release.zip) 部署解压后的文件夹,不能调整文件夹里面的目录,避免资源互相引用异常。

3. 设置播放器容器节点:

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

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

说明:

  • 播放器容器必须为 <video> 标签。
  • 示例中的 player-container-id 为播放器容器的 ID,可自行设置。
  • 播放器容器区域的尺寸,建议通过 CSS 进行设置,通过 CSS 设置比属性设置更灵活,可以实现例如铺满全屏、容器自适应等效果。
  • 示例中的 preload 属性规定是否在页面加载后载入视频,通常为了更快的播放视频,会设置为 auto,其他可选值:meta(当页面加载后只载入元数据),none(当页面加载后不载入视频),移动端由于系统限制不会自动加载视频。
  • playsinline‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍webkit-playsinline 这几个属性是为了在标准移动端浏览器不劫持视频播放的情况下实现行内播放,此处仅作示例,请按需使用。
  • 设置 x5-playsinline 属性在 TBS 内核会使用 X5 UI 的播放器。

4. 初始化播放器,并传入 COS 视频文件对象地址 URL:

var player = TCPlayer('player-container-id', {}); // player-container-id 为播放器容器 ID,必须与 html 中一致
player.src(cosObjectUrl); // url 播放地址

二. 具体播放场景

场景一:播放公有读视频文件

存储桶公有读权限包括两种:公有读私有写、公有读写。其中,公有读私有写权限下,任何人(包括匿名访问者)都对该存储桶中的对象有读权限,但只有存储桶创建者及有授权的账号才对该存储桶中的对象有写权限。公有读写权限下,任何人(包括匿名访问者)都对该存储桶中的对象有读权限和写权限,不推荐使用。

播放公有读权限的视频文件的步骤为:

1、将存储桶设置为公有读;

2、上传视频文件后,复制对象地址;

3、结合前面的步骤流程,使用 TCPlayer 播放公有读视频文件地址,代码如下:

<script>
var tcplayer = TCPlayer("player-container-id", {})
tcplayer.src('https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/path/test.mp4')
</script>

4、效果:

场景二:播放私有读视频文件

为了保障存储桶数据的安全性能,一般推荐将存储桶设为私有读写权限。此时只有该存储桶的创建者及有授权的账号才对该存储桶中的对象有读写权限,其他任何人对该存储桶中的对象都没有读写权限。

播放私有读权限的视频文件的步骤为:

1、将存储桶设置为私有读;

2、由于存储桶为私有读,因此访问的对象地址需要携带上签名,有三种方式:

方法一:在对象信息中复制临时链接,该临时链接携带有效期为1小时的签名参数;

方法二:利用 COS 签名工具,计算您的对象签名;

方法三:利用 API 或对应 SDK,计算您的对象签名;

以上三种方法中,正式使用时推荐使用方法三的 SDK 签名方式,更加方便安全地计算您的对象签名。

3、结合前面的步骤流程,利用 TCPlayer 播放携带签名的私有读视频文件地址,完整代码如下:

<script>
var tcplayer = TCPlayer("player-container-id", {})
tcplayer.src('https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/path/test.mp4?<Authorization>')
</script>

4、效果:

场景三:播放公有读 HLS 视频文件

HTTP Live StreamingHLS)是一个由苹果公司提出的基于 HTTP 的流媒体网络传输协议。是苹果公司 QuickTime X 和 iPhone 软件系统的一部分。它的工作原理是把整个流分成一个个小的基于 HTTP 的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。在开始一个流媒体会话时,客户端会下载一个包含元数据的 extended M3U m3u8playlist 文件,用于寻找可用的媒体流。

对象存储(COS)数据处理提供了 HLS 视频转码的功能。您可以结合 COS 数据工作流转码任务,播放 HLS 视频文件。

1、创建音视频转码任务;

2、选择系统模版中的任一 HLS 转码任务,配置任务生成 HLS 视频文件;

3、复制生成的 m3u8 文件对象地址;

4、结合前面的步骤流程,利用TCPlayer播放公有读 HLS 视频文件地址,完整代码如下:

<script>
var tcplayer = TCPlayer("player-container-id", {})
tcplayer.src('https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/path/test.m3u8')
</script>

5、效果:

场景四:播放私有读 HLS 视频文件

在场景三的基础上,为了保证存储桶数据的安全性,我们把存储桶设置为私有读写权限,同时结合 PM3U8 API,进行私有 HLS 视频文件的播放,具体步骤如下:

1、将存储桶设置为私有读;

2、由于存储桶是私有的,所以需要给每块TS分片设置请求签名。COS提供了 PM3U8 API,让你在请求m3u8文件时,携带上相关的参数?ci-process=pm3u8&expires=3600,返回的文件中的 TS 分片请求路径就能携带上对应的请求签名。

2.1 普通 m3u8 文件的请求结果如下,ts分片不带签名:

2.2 利用 PM3U8 API,请求的结果如下,ts分片携带签名:

2.3 结合前面的步骤流程,利用TCPlayer播放 私有读 HLS 视频文件地址,完整代码如下:

<script>
var tcplayer = TCPlayer("player-container-id", {})
tcplayer.src('https://examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/path/test.m3u8?ci-process=pm3u8&expires=3600&sign')
</script

2.4 效果:

实践:基于腾讯云播放器SDK,带您体验播放多场景下的 COS 视频文件的更多相关文章

  1. 腾讯云播放器更新——TCplayer

    概述 最近腾讯云播放器进行了更新,增加了TCplayer,支持点播播放.由于工作需要,了解了一下TCplayer,把心得记录下来,供以后开发时参考,相信对其他人也有用. 参考文档: TCPlayer开 ...

  2. cuplayer酷播播放器 swf 带参数直接播放

    客户需要使用cuplayer,直接调用swf 播放器. /Player/player.swf?FlvID=745,此处写入视频ID; 官方给的例子,运行是有问题的. http://www.cuplay ...

  3. 基于libVLC的视频播放器

    本文来自于:http://blog.csdn.net/leixiaohua1020/article/details/42363079 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放 ...

  4. 基于腾讯云监控 API 的 Grafana App 插件开发

    Tencent Cloud Monitor App Grafana 是一个开源的时序性统计和监控平台,支持例如 elasticsearch.graphite.influxdb 等众多的数据源,并以功能 ...

  5. 【Unity】讯飞语音识别SDK

    1.进入讯飞官网,注册帐号,进入控制台,创建新应用UnityXunfeiDemo,平台选Android.在当前应用这点下载SDK,添加AI能力(添加新服务),选择语音听写,即可下载安卓SDK(下称讯飞 ...

  6. 基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本

    第9期:WAV,MP3软解播放器,带类似千千静听频谱配套例子:V6-916_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(uCOS-III)V6-917_STemWin提高篇 ...

  7. 关于讯飞语音SDK开发学习

    前奏,浑浑噩噩已经工作一年多,这一年多收获还是挺多的.逛园子应该有两年多了,工作后基本上是天天都会来园子逛逛,园子 里还是有很多牛人写了一些不错的博客,帮我解决很多问题.但是一直没写过博客,归根到底一 ...

  8. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  9. 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行

    [微信支付]分享一个失败的案例 2018-06-04 08:24 by stoneniqiu, 2744 阅读, 29 评论, 收藏, 编辑 这个项目是去年做的,开始客户还在推广,几个月后发现服务器已 ...

  10. 转:最简单的基于 DirectShow 的视频播放器

    50行代码实现的一个最简单的基于 DirectShow 的视频播放器 本文介绍一个最简单的基于 DirectShow 的视频播放器.该播放器对于初学者来说是十分有用的,它包含了使用 DirectSho ...

随机推荐

  1. 自动删除几天前的备份集文件脚本 for windows

    将以下内容根据自己想要备份的库修改后保存为del.bat,加入到计划任务中 @echo 删除指定路径下指定N天前的文件 @echo off@echo.------------------------- ...

  2. [vite] Internal server error: Invalid end tag.

    使用vue3+vite+ant搭建的前端框架 在开发页面的时候发现了一直报错: [vite] Internal server error: Invalid end tag. 找也找不到为什么,网上查的 ...

  3. 重启nginx 报错 nginx.pid

    先检查 nginx -c /etc/nginx/nginx.conf 看看端口是否被占用 若占用杀掉 ps -ef | grep nginx kill --- 然后再用nginx -c /etc/ng ...

  4. 靶机练习6: BSS(Cute 1.0.2)

    靶机地址 https://www.vulnhub.com/entry/bbs-cute-102,567/ 信息收集 进行全端口扫描,确认目标开放端口和服务 nmap -n -v -sS --max-r ...

  5. Angular JS入门 (一)事件监听(二)多控制器思想与模块化编程(三)路由router

    Angular JS入门 ️将流式结构--->模块化 一.事件监听 1.事件监听 前言 NG框架中通过对元素标签添加[ng-事件名] 指令,来对元素添加事件监听 而事件监听的回调函数需要在con ...

  6. PYTHON中的CONCURRENT.FUTURES模块

    一 : 概述 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异 ...

  7. 学习笔记-Java面向对象

    学习来源: B站[狂神说Java]Java零基础学习视频通俗易懂 static关键字详解 package com.oop.demo07; //static public class Student{ ...

  8. js导出数据为excel表

    1.接口数据后端写, 2.代码如下: var params={ "filters":[ {"propertyCode":"sequenceNo&quo ...

  9. [Notes-DS-2]线性结构

    分割线------------- 分割线----------------

  10. redis缓存一致性

    redis缓存一致性 redis是目前使用最广泛的分布式缓存系统,几乎每家公司都在用.它使用简单,吞吐量高,单机 qps 可以达到 10 万每秒,但在使用redis缓存时存在一个问题,即如何保证缓存数 ...