导语

上回 (COS音视频实践|多种姿势让你的视频“跑”起来)说道,基于您的实际场景,可以选择不同的方式,在 Web 浏览器端播放您的 COS 视频文件。本文将基于腾讯云超级播放器,带您体验播放多场景下的 COS 视频文件。

一. 实践步骤

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

1.1 创建一个存储桶;

1.2 上传对象;

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

  1. 在页面中引入播放器样式文件与脚本文件:
<!--播放器样式文件-->
<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)

部署解压后的文件夹,不能调整文件夹里面的目录,避免资源互相引用异常。

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

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

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

说明:

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

方法三:利用 API 或对应 SDK,计算您的对象签名(参考文档:

https://cloud.tencent.com/document/product/436/7778#sdk-.E7.AD.BE.E5.90.8D.E5.AE.9E.E7.8E.B0);

以上三种方法中,正式使用时推荐使用方法三的 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 文件,用于寻找可用的媒体流。

对象存储(Cloud Object Storage,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 效果:

三. 体验

以上实践,我们还准备了一个线上体验demo(https://ci-exhibition.cloud.tencent.com/tools/video/),欢迎大家体验。

展望

本期「COS 音视频实践到此结束」,欢迎大家体验使用,下期精彩内容,敬请期待。

COS 音视频实践|播放多场景下的 COS 视频文件的更多相关文章

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

    一. 实践步骤 1. 准备您的 腾讯云COS 视频文件链接,您需要: 1.1 创建一个存储桶: 1.2 上传对象: 1.3 在对象信息详情里复制对象地址: 注意: 目前腾讯云有COS特惠活动,新人1元 ...

  2. CephRGW 在多个RGW负载均衡场景下,RGW 大文件并发分片上传功能验证

    http://docs.ceph.com/docs/master/radosgw/s3/objectops/#initiate-multi-part-upload 根据分片上传的API描述,因为对同一 ...

  3. COS 音视频实践 | 数据工作流助你播放多清晰度视频

    前言 你是否遇到过这样的场景: 兴致勃勃地观看心爱的视频,正当到了激动人心的高潮部分,却突然因为网速过差被迫陷入"转圈圈"的人生以及社会的大思考中. 又或者是身为网速畅通无阻的vi ...

  4. COS 音视频实践 | 多种姿势让你的视频“跑”起来

    导语 随着4G/5G时代的到来,短视频/直播行业开始流行,音视频逐渐成为信息传播中流量占比最大的部分.腾讯云对象存储(COS)作为可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务, ...

  5. 如何基于EasyDSS体系的全套SDK完成各种场景下的视频应用需求

    需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...

  6. 如何基于EasyDSS流媒体RTMP、HLS(m3u8)、HTTP-FLV、RTSP服务器体系的全套SDK完成各种场景下的视频应用需求

    需求背景 回顾EasyDSS的发展过程,基本上保持的是先局部后系统.先组件后平台的发展方式,一步一步夯实每一个细节功能点,从最基础.最兼容的音视频数据的拉流获取,到高效的.全兼容的数据推流,再到流媒体 ...

  7. 网页视频直播、微信视频直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的直播接入需求

    背景分析 熟悉EasyNVR产品的朋友们都知道,EasyNVR不仅可以独成体系,而且还可以跟其他系列产品相配合,形成各种不同类型的解决方案,满足各种不同应用场景的实际需求.针对很多设备现场没有固定公网 ...

  8. 从零入门 Serverless | SAE 场景下,应用流量的负载均衡及路由策略配置实践

    作者 | 落语 阿里云云原生技术团队 本文整理自<Serverless 技术公开课>,关注"Serverless"公众号,回复"入门",即可获取 S ...

  9. 基于jsmpeg库下使用ffmpeg创建视频流连接websocket中继器传输视频并播放

    这个功能的基本工作是这样的: 1.使用node运行jsmpeg库下的websocket-relay.js文件,这个文件的作用是创建一个websocket视频传输中继器 2.运行ffmpeg,将输出发送 ...

  10. 【转】MySQL乐观锁在分布式场景下的实践

    背景 在电商购物的场景下,当我们点击购物时,后端服务就会对相应的商品进行减库存操作.在单实例部署的情况,我们可以简单地使用JVM提供的锁机制对减库存操作进行加锁,防止多个用户同时点击购买后导致的库存不 ...

随机推荐

  1. Sketch Measure切图插件无法导出标注 (换插件绕过解决)

    环境 MacOS 10.15+ sketch版本 69.2 插件版本 2.8.1 遇到的问题 导出标注卡死 更新版本无解,到插件的github issue中找到解决方法 使用MeaXure插件,git ...

  2. springboot 基本配置文件

    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/game?useUnicode=true&zeroDateTimeBehavior=conv ...

  3. IT运维工单高效协同,助力打造一站式运维方案

    随着经济全球化的发展趋势,信息系统在企业运营中占据着愈发重要的位置.业务系统越来越多,用户对信息系统的依赖性越来越强,关键业务系统的中断都将导致企业业务.服务的中断,极大的影响了企业业务稳定运行和持续 ...

  4. 数据库周刊57丨Oracle 2021年度安全警报;MySQL 8.0.23发布;MySQL索引优化导致的死锁案例;巨杉数据库跨引擎事务实践;MongoDB企业级能力解析;OceanBase OBCP 实验指导手册……

    摘要:墨天轮数据库周刊第57期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档. 热门资讯 1.Oracle 2021年度安全警报: Critical Patch Update 发布8个 ...

  5. 谈谈你对 vue 的理解

    vue 是创建用户界面的 js 框架 ,是创建 spa 应用的框架 :使用 mvvm 模式,数据驱动视图模型 ,业务逻辑和页面解构分离开发:使用高效的 diff 算法渲染页面结构 : 采用组件化模式, ...

  6. 77.const声明对象修改对象里面的值会触发报错吗

    不会,因为对象是复杂类型数据 :对象的地址保存在栈内存中,对象的数据保存在堆内存中 : 只要对象的地址不发生改变,无论堆内存的对象数据如何改变,对象的值就不会改变 :

  7. 基于 KubeSphere 的应用容器化在智能网联汽车领域的实践

    公司简介 某国家级智能网联汽车研究中心成立于 2018 年,是担当产业发展咨询与建议.共性技术研发中心.创新成果转化的国家级创新平台,旨在提高我国在智能网联汽车及相关产业在全球价值链中的地位. 目前着 ...

  8. 云原生爱好者周刊:KubeSphere 3.3.0 Alpha 版发布

    开源项目推荐 Collection of Linux eBPF slides/documents 这个项目收集了各种与 eBPF 相关的资料,非常全面. magic-trace magic-trace ...

  9. 图菱科技 SaaS 系统容器化最佳实践

    大家好,我是龚承明,在图菱(成都)科技有限公司任职,主要负责公司的产品系统研发以及公司IT基础设施的建设工作.本篇文章将为大家介绍下我司在采用 KubeSphere 平台实现公司业务系统容器化过程中的 ...

  10. 第147篇:微信小程序开发中Promise的使用(aysnc,await)

    好家伙, 0.错误描述 今天在开发中犯了一个比较严重的错误 对于Promise的错误使用 场景: 微信小程序中展示搜索条件列表 // API请求工具函数 const apiRequest = (url ...