当前位置: 首页 > 编程日记 > 正文

阿里云 Aliplayer高级功能介绍(二):缩略图

为什么80%的码农都做不了架构师?>>>   hot3.png

基本介绍

Aliplayer提供了缩略图的功能,让用户在拖动进度条之前知道视频的内容,用户能够得到很好的播放体验,缩略图是显示在Controlbar的上面,并且包含当前的时间,阿里云的媒体处理服务提供接口可以生成缩略图的功能, 先看一下基本的效果:

cfab58cc212636872f287758e39a2a77d1cddf38

缩略图的格式

WebVTT介绍

缩略图采用了webvtt的文件格式去表示时间和显示图片的对应关系,WebVTT不仅可读性好,而且解析也比较容易,下面是一个27秒包含3个截图的WebVTT文件内容:

WEBVTT00:00.000 --> 00:09.174
vM7nH0Kl-120.jpg?xywh=0,0,120,5300:09.174 --> 00:18.348
vM7nH0Kl-120.jpg?xywh=120,0,120,5300:18.348 --> 00:27.523
vM7nH0Kl-120.jpg?xywh=240,0,120,53

WebVTT是UTF-8编码格式的文本文件,主要如下:

  • 第一行必需是WEBVTT,表明这是个WebVTT文件文件。
  • 接着是一空行,后面就是时间范围和要显示的缩略图,时间格式是HH:MM:SS.sss,时:分:秒.毫秒, 开始时间 --> 结束时间,-->的两边各有一个空格,这两个时间必需写在同一行,并且时间都是相对于视频开始的时间间隔。
  • 时间之后是缩略图的地址,时间和缩略图的地址之间不能有空行,缩略图的描述主要包含图片的地址,地址后面的xywh参数描述图片的显示位置和大小。

图片地址说明

缩略图可以是多张图片,也可以是雪碧图方式拼成的一张大图,雪碧图的优点是可以减少图片的请求数和减少图片显示的延迟时间等。
图片地址的基本格式:{imgUrl}?xywh=x,y,w,h, 参数说明:

名称说明
x水平位置,左上角是0,雪碧图时使用
y垂直位置,左上角是0,雪碧图时使用
w图片的显示宽度
h图片的显示高度

独立图片的地址格式

每个地址都是不一样的, 参数只需要指定图片的显示宽度和高度,比如:

WEBVTT00:00.000 --> 00:09.174
vM7nH0Kl-120.jpg?wh=120,5300:09.174 --> 00:18.348
vM7nH0Kl-121.jpg?wh=120,53

雪碧图的地址格式

每个地址都使用同一个图片的地址,通过参数指定要显示的图片位置和大小,比如下面的雪碧图:

50ddbc7a4c4239251583c16b5c6949bd1a5428d5

下面的描述对应的是第一张和第二张图的位置和大小

WEBVTT00:00.000 --> 00:09.174
vM7nH0Kl-120.jpg?xywh=0,0,120,5300:09.174 --> 00:18.348
vM7nH0Kl-120.jpg?xywh=120,0,120,53

Aliplayer的使用

Aliplayer可以独立的使用缩略图的功能,用户只需要指定WebVTT的地址,当然也可以和阿里云的媒体处理服务(MPS)结合使用,通过媒体处理服务生成缩略图,当通过videoId方式播放时,播放器会自动获取缩略图的地址,解析,然后显示。

如何生成缩略图

生成缩略图可以调用阿里云的媒体处理服务的截图功能,生成缩略图,仅支持HLS的视频格式,具体的接口地址:如何设置截图

VideoId方式播放

媒体处理服务生成缩略图以后可以通过VideoId的方式播放,播放器会自动从云端获取缩略图地址、获取内容、解析、显示,代码如下:

  let player = new Aliplayer({id: 'J_prismPlayer',width: '100%',height: '100%',autoplay: true,vid : '1e067a2831b641db90d570b6480fbc40',accId: '',accSecret: '',stsToken: '',domainRegion: '',authInfo: '',});

媒体处理播放方式的详细文档参考:MPS播放说明

自己指定WebVTT地址

Aliplayer提供了thumbnailUrl属性用于指定WebVTT的地址,这种方式对于视频格式就没有要求了, 当用户由于特殊原因不能使用videoId的方式播放视频时,可以自己获取WebVTT的缩略图地址,通过thumbnailUrl属性指定,代码如下:

  let player = new Aliplayer({id: 'J_prismPlayer',width: '100%',height: '100%',autoplay: true,soruce:'https://player.alicdn.com/resource/player/qupai.mp4',thumbnailUrl:'http://100.69.163.12/vM7nH0Kl-120.vtt'});

作者: nahom
原文链接
本文为云栖社区原创内容,未经允许不得转载。

转载于:https://my.oschina.net/yunqi/blog/2999308

相关文章:

【ACM】杭电OJ 2044 2045

一开始全部使用int型&#xff0c;显示WA&#xff0c;百度之后&#xff0c;要全部改成long long 两个题都是死在long long 上 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <s…

POJO、JavaBean、DAO

POJO POJO全称是Plain Ordinary Java Object / Plain Old Java Object&#xff0c;中文可以翻译成&#xff1a;普通Java类&#xff0c;具有一部分getter/setter方法的那种类就可以称作POJO。一般在web应用程序中建立一个数据库的映射对象时&#xff0c;我们只能称它为POJO。 Ja…

jupyter notebook用法积累(快捷键)

打开Anaconda promt&#xff0c;如果想把代打都存在H&#xff1a;\python\py&#xff0c;则输入命令 h: 回车进入h盘&#xff0c;再输入 cd python\py回车就进入这个H&#xff1a;\python\py目录下再输入jupter notebook 回车就打开了浏览器 ctrl回车 可以当前块运行&#xff0…

android资料整理

1. android native内存分析&#xff1a;全民K歌Android端Native内存分析与监控方案实践总结 - 知乎一、背景在2020年的上半年&#xff0c;我们在用户反馈后台发现闪退、白屏问题不断增多&#xff0c;这些问题严重影响用户体验。观察Crash监控平台发现Crash率也在逐步升高,其中N…

Java读取property配置文件

读取配置文件已经成了Java程序员工作的一项必备技能。 配置文件的优点&#xff1a; 可维护性好 怎么个可维护性好呢&#xff1f; 它会让程序中变化的地方很灵活的配置&#xff0c;不需要修改代码。Java程序部署到服务器上去之后就变成了class文件&#xff0c;修改困难&#xf…

【ACM】杭电OJ 2048 2049

两题均是错排公式与阶乘的运用 2048算的是一个比例&#xff0c;2049计算的是一个事情发生的总数 一个用double 来存放数据&#xff0c;一个用long long来存放数据 2048 #include <iostream> #include <cstdio> #include <cstring> #include <cmath&g…

百度成立小度蓝牙联盟,DMA+小度App打造蓝牙语音风口

人机交互经历了三个阶段键鼠、触屏和语音交互。在国外&#xff0c;谷歌、亚马逊、苹果等巨头的竞争已经到达白热化状态&#xff1b;在国内&#xff0c;百度的DuerOS正是这方面的一位大玩家。 在技术发展的各个时代中&#xff0c;提前入局的厂商&#xff0c;必然能够第一时间享…

ptam tracking

并行追踪与制图&#xff08;Parallel Tracking and Mapping&#xff09;简称PTAM&#xff0c;于2007年由英国牛津大学主动视觉实验室的Georg Klein和David Murray提出。PTAM在机器导航&#xff0c;机器探索&#xff0c;人机互动&#xff0c;三维重建等方面都有应用。在这之前已…

【ACM】杭电OJ 2050

直线&#xff1a; 平行线 折线 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <algorithm> using namespace std; int main () {int n,m;scanf("%d",&n);while…

ASP.NETCore学习记录(一)

ASP.NETCore学习记录(一) asp.net core介绍 Startup.cs ConfigureServices Configure 0. ASP.NETCore 介绍 ASP.NETCore是一个新的开源和跨平台的框架&#xff0c;用于构建如Web应用、物联网&#xff08;IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET …

ptam程序流程

程序运行基本流程&#xff1a;Step1: System::System(){ 1、注册一系列命令、添加相对应的功能按钮。 2、创建摄像机mpCamera new ATANCamera("Camera"); 实现的功能包括&#xff1a;加载camera.cfg配置文件中的摄像机内参&#xff08;mvFocal[0]、mvFocal[1]、mvCe…

js / jquery 零散收集

2019独角兽企业重金招聘Python工程师标准>>> <select id"typeSelector" οnchange"choiceoption(this.options[this.options.selectedIndex])"> <option id"xx" value"a">A</option> </select> &…

【ACM】杭电OJ 2057

思路&#xff1a; 本题注意十六进制的输入输出格式。 注意&#xff1a; 1.别忘了需要用__int64&#xff0c;因为数据比较大&#xff1b; 2.两数相加为负数的时候&#xff0c;想着分开考虑。 #include <iostream> #include <cstdio> #include <cstring> #…

OpenCV学习系列教程第五篇:测试和提高代码的效率

Opencv-Python学习系列教程第五篇 来自opencv-python官方学习文档&#xff0c;本人谨做翻译和注释&#xff0c;以及一些自己的理解 本文由作者翻译并进行代码验证&#xff0c;转载请注明出处~ 官方文档请参阅&#xff1a;https://docs.opencv.org/4.0.1/dc/d71/tutorial_py_opt…

ORB-SLAM论文翻译

ORB-SLAM: a Versatile and Accurate Monocular SLAM System 原文发表于&#xff1a;IEEE Transactions on Robotics (Impact Factor: 2.43). 10/2015 摘要&#xff1a; 本文主要讲了ORB-SLAM&#xff0c;一个基于特征识别的单目slam系统&#xff0c;可以实时运行&#xff0…

UVa11300 - Spreading the Wealth

题意 n个人围成一圈&#xff0c;每个人都有一定数量的金币&#xff0c;金币总数可被n整除&#xff0c;现可将手中金币给左右相邻的人&#xff0c;最终使每人手中的金币数相等&#xff0c;求最少转移的金币数量。 思路 设a[i]给了a[i-1]x1个金币&#xff0c;从a[i1]拿到x2个金币…

【ACM】杭电OJ 1862

用了三个快速排序的子函数进行排序&#xff0c;排序结束后&#xff0c;再从头循环&#xff0c;判断成绩或者姓名是否相同。 #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <alg…

Custom Client Side Drag and Drop Behavior in ASP.NET AJAX

这是我的一篇在http://aspalliance.com/上的英文文章&#xff0c;限于版权协议中的排他性条款&#xff0c;这里只能给出一部分摘要引用。有兴趣的朋友可以到这里看到完整的全文&#xff1a;《Custom Client Side Drag and Drop Behavior in ASP.NET AJAX》。 Published: 19 Jun…

SLAM的开源以及在移动端AR的适用分析

当前的开源方案 当下部分总结引用自blog:http://blog.csdn.net/OnafioO/article/details/73175835文章总结很好没本文关于其在移动端方面加以总结&#xff0c;希望大家参与讨论&#xff0c;不足之处&#xff0c;请指正。 本讲的前半部分将带领读者参观一下当前的视觉SLAM方案…

用 cooking 搭建一个简单又优雅的 Vue 项目开发环境 (入门篇)

本文适合 Vue 的初学者&#xff0c;以及对 webpack 不熟悉的同学阅读。前提是你要会用基本的命令行、 Node 和 NPM&#xff0c;以及掌握 ES2015 的基础知识。本文都是在 macOS 环境下运行&#xff0c;要求使用 npm > 3, node > 4 的环境。我们会以 Vue 2.0 搭配 Webpack …

【算法导论】【ACM】归并排序总结

许多有用的算法在结构上是递归的&#xff1a;为了解决一个给定的问题&#xff0c;算法一次或多次递归地调用其自身以解决紧密相关地若干子问题。这些算法典型的遵循分治法地思想&#xff1a;将原问题分解成几个规模较小但类似于原问题的子问题&#xff0c;递归地求解这些子问题…

C++ 纯虚方法

1、纯虚方法解决什么样的问题&#xff0c;为什么要设计出纯虚方法&#xff1f; 考虑下面的需求&#xff0c;基类声明了一个方法&#xff0c;这个方法只针对具体的子类才有意义&#xff0c;比如Animal的Eat()方法&#xff0c;调用Animal的Eat方法是没有意义的。比如Dog吃肉&…

C++标准库中各种排序归纳

一、简介所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。我们在编程过程中会经常接触到排序&#xff0c;比如游戏中的排行榜等。C标准库中提供了各种不同的排序算法&#xff0c;这篇博客将逐一介绍。…

【数据结构】最小生成树 Prim算法 Kruskal算法

最小生成树应用场景&#xff1a; 假设以下场景&#xff0c;有一块木板&#xff0c;板上钉上一些钉子&#xff0c;这些钉子可以由一些细绳连接起来。假设每个钉子可以通过一根或者多根细绳连接起来&#xff0c;那么一定存在这样得情况&#xff0c;即用最少的细绳把所有的钉子连…

.net内存回收与Dispose﹐Close﹐Finalize方法

.net内存回收与Dispose﹐Close﹐Finalize方法 一. net的对象使用一般分为三种情况﹕ 1.创建对象2.使用对象3.释放对象 二.创建对象1.创建对象实际分为两个步骤﹕变量类型宣告和初始化对象 2.变量类型宣告(declare),如﹕ FileStream fs这行代码会在当前的变量作用域空间(栈或堆)…

SLAM学习--------相机位姿表示-李群李代数

slam 求解相机的位姿求解核心思想&#xff1a;将有约束的李群问题转换成无约束的李代数问题&#xff0c;然后使用高斯牛顿算法或者LM(列文伯格-马夸尔特法)求解。 人们找了很多以相机位姿为变量的误差函数&#xff0c;比如光度误差&#xff0c;重投影误差&#xff0c;3D几何误…

【ACM】杭电OJ 2063

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2063 借鉴&#xff1a;http://blog.sina.com.cn/s/blog_ac5ed4f30101ewjk.html 二分图&#xff08;二部图&#xff09;&#xff1a;图论中的一种特殊模型。设G(V,E)是一个无向图&#xff0c;如果顶点V可以分割…

AngularJs表单自动验证

angular-auto-validate 地址&#xff1a;https://github.com/jonsamwell/angular-auto-validate 引用&#xff1a; <script src"/Assets/JS/AngularJS/angular-auto-validate/dist/jcs-auto-validate.js" charset"utf-8"></script> 依赖&#…

AlwaysVisibleControlExtender

今天早上学习了AlwaysVisibleControlExtender控件&#xff0c;感觉还是不错。下午就写点东西&#xff0c;总结一下使用方法。 简单使用示例(显示当前时间) 1&#xff09;在VS下&#xff0c;新建一个ASP.NET AJAX-Enabled Web Project项目&#xff0c;命名为AlwaysVisibleC…

Depth graph

深度相机 定义&#xff1a;可以直接获取场景中物体距离摄像头物理距离的相机。在计算机视觉系统中&#xff0c;三维场景信息为图像分割、目标检测、物体跟踪等各类计算机视觉应用提供了更多的可能性&#xff0c;而深度图像&#xff08;Depth map&#xff09;作为一种普遍的三维…