实践:基于腾讯云播放器SDK,带您体验播放多场景下的 COS 视频文件
一. 实践步骤
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 Streaming(HLS)是一个由苹果公司提出的基于 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 视频文件的更多相关文章
- 腾讯云播放器更新——TCplayer
概述 最近腾讯云播放器进行了更新,增加了TCplayer,支持点播播放.由于工作需要,了解了一下TCplayer,把心得记录下来,供以后开发时参考,相信对其他人也有用. 参考文档: TCPlayer开 ...
- cuplayer酷播播放器 swf 带参数直接播放
客户需要使用cuplayer,直接调用swf 播放器. /Player/player.swf?FlvID=745,此处写入视频ID; 官方给的例子,运行是有问题的. http://www.cuplay ...
- 基于libVLC的视频播放器
本文来自于:http://blog.csdn.net/leixiaohua1020/article/details/42363079 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放 ...
- 基于腾讯云监控 API 的 Grafana App 插件开发
Tencent Cloud Monitor App Grafana 是一个开源的时序性统计和监控平台,支持例如 elasticsearch.graphite.influxdb 等众多的数据源,并以功能 ...
- 【Unity】讯飞语音识别SDK
1.进入讯飞官网,注册帐号,进入控制台,创建新应用UnityXunfeiDemo,平台选Android.在当前应用这点下载SDK,添加AI能力(添加新服务),选择语音听写,即可下载安卓SDK(下称讯飞 ...
- 基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本
第9期:WAV,MP3软解播放器,带类似千千静听频谱配套例子:V6-916_STemWin提高篇实验_WAV,MP3软解播放器,带类似千千静听频谱(uCOS-III)V6-917_STemWin提高篇 ...
- 关于讯飞语音SDK开发学习
前奏,浑浑噩噩已经工作一年多,这一年多收获还是挺多的.逛园子应该有两年多了,工作后基本上是天天都会来园子逛逛,园子 里还是有很多牛人写了一些不错的博客,帮我解决很多问题.但是一直没写过博客,归根到底一 ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- 【微信支付】分享一个失败的案例 跨域405(Method Not Allowed)问题 关于IM的一些思考与实践 基于WebSocketSharp 的IM 简单实现 【css3】旋转倒计时 【Html5】-- 塔台管制 H5情景意识 --飞机 谈谈转行
[微信支付]分享一个失败的案例 2018-06-04 08:24 by stoneniqiu, 2744 阅读, 29 评论, 收藏, 编辑 这个项目是去年做的,开始客户还在推广,几个月后发现服务器已 ...
- 转:最简单的基于 DirectShow 的视频播放器
50行代码实现的一个最简单的基于 DirectShow 的视频播放器 本文介绍一个最简单的基于 DirectShow 的视频播放器.该播放器对于初学者来说是十分有用的,它包含了使用 DirectSho ...
随机推荐
- k3s|如何将k8s集群的node节点设置不可调度或删除node节点?
k3s|如何将k8s集群的node节点设置不可调度或删除node节点? k3s是由 Rancher 公司开发的轻量级Kubernetes,是经CNCF一致性认证的Kubernetes发行版,专为物联网 ...
- 蓝牙mesh消息包与以太网帧的分层构成
目录 笔者在接触以太网之前,先了解的是蓝牙mesh的各类信息.现翻看一本介绍TCP/IP协议的资料,发现应用层数据在以太网协议栈内的封装过程与蓝牙mesh协议栈内的封装过程异曲同工.下图左侧是手头这本 ...
- go 编程基础学习笔记
dos 命令 2023-01-26 1.切换盘符 只要输入 c: d: e: 等即可 2.显示目录详细内容 dir 3.切换目录 cd 留意 一个点 . 代表当前目录, 两个点.. 代表上一级目录 4 ...
- Blender中服装网格重新拓扑实录
最近了解到游戏行业服装的一些处理流程.简单来说: 用MD等做衣服的软件,将服装做出来: 导出2种模型:缝合好的服装模型(叫它3d)以及没有变形的平铺板片模型(叫它2d),建议导出单层的,都要带着UV, ...
- vs MFC c++ rc文件的dilog打不开,显示加载失败
最近在做一个项目,在vs2012上面用mfc画界面,由于没有确定好且不熟悉这个架构,控件类型变了又变,本人又是个有点强迫症的性格所以删掉了一些不用的控件,导致的结果就是上面说的,dialog打不开报加 ...
- bootstrap table表格按钮
1 <body> 2 3 <form action="" method="POST" class="form-horizontal& ...
- 用C++写的文件字符数、单词数以及总行数的统计(源码)
#include <stdio.h> #include <fstream> #include <string> using namespace std; //计算单 ...
- go语言学习教程
go语言学习教程 集合了连接go routine.go连接redis.go连接kafka等示例 https://github.com/fastbpmn/go-study TRANSLATE with ...
- 【转载】rename。给文件批量改名的python脚本
https://www.bilibili.com/read/cv16146757 确认py版本:2.7, 3.6? 1 import os, sys, re, math, openpyxl, csv ...
- Day20:update功能的实现
今日完成的任务: 1.将最初设想的消息界面删除,删去message和chat等无参数跳转界面,并在物品详情中增加[联系方式]一栏供大家线下交易使用. 最终完成界面如下 2.实现本个小程序最后一个功能- ...