阿里云Aliplayer高级功能介绍(一):视频截图

简介: H5 Video是不提供截图的API的, 视频截图需要借助Canvas,通过Canvas提供的drawImage方法,把Video的当前画面渲染到画布上, 最终通过toDataURL方法可以导出图片的base64编码,基本就完成了图片截图的功能。

基本介绍

H5 Video是不提供截图的API的, 视频截图需要借助Canvas,通过Canvas提供的drawImage方法,把Video的当前画面渲染到画布上, 最终通过toDataURL方法可以导出图片的base64编码,基本就完成了图片截图的功能。

功能实现

Canvas接口介绍

drawImage接口
在画布上绘制图像、画布或视频,也能够绘制图像的某些部分,以及/或者增加或减少图像的尺寸,主要参数为:
参数 描述
img 规定要使用的图像、画布或视频。
sx 可选。开始剪切的 x 坐标位置。
sy 可选。开始剪切的 y 坐标位置。
swidth 可选。被剪切图像的宽度。
sheight 可选。被剪切图像的高度。
dx 在画布上放置图像的 x 坐标位置。
dy 在画布上放置图像的 y 坐标位置。
dwidth 可选。要使用的图像的宽度。(伸展或缩小图像)
dheight 可选。要使用的图像的高度。(伸展或缩小图像)

参考一下这个图应该就比较清楚的了:

91b355fc77bab0f1a8d1bdfcdb355b3896063dd6

看一个例子,比如一个视频是640X480,现在需要截取下半部分:

function(){
  var c=document.getElementById("myCanvas");
  var ctx=c.getContext("2d");
  var video=document.getElementByTagName("video");
  ctx.drawImage(video,0,240,640,240,0,0,640,240);
};

toDataURL接口

方法返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。图片的分辨率为96dpi

参数 描述
type 可选。图片格式,默认为 image/png
encoderOptions 可选。在指定图片格式为 image/jpeg 或 image/webp的情况下,可以从 0 到 1 的区间内选择图片的质量。如果超出取值范围,将会使用默认值 0.92。其他参数会被忽略

比如设置导出图片的质量:

var fullQuality = canvas.toDataURL("image/jpeg", 1.0);
var mediumQuality = canvas.toDataURL("image/jpeg", 0.5);
var lowQuality = canvas.toDataURL("image/jpeg", 0.1);

导出图片时需注意的:

  • 如果画布的高度或宽度是0,那么会返回字符串“data:,”。
  • 如果传入的类型非“image/png”,但是返回的值以“data:image/png”开头,那么该传入的类型是不支持的。
  • Chrome支持“image/webp”类型。
  • 图片地址或者视频地址需要支持跨越访问,并且在 img或video Dom元素上添加属性crossOrigin:"anonymous"
<video crossOrigin:"anonymous"></video>
<img crossOrigin:"anonymous"></img>

Aliplayer的截图功能

Alilayer里实现的截图除了截图一张图片,还可以添加水印,还可以截取镜像的视频,效果如下:

6a491371b3e1bf20e5bf38badebe8916e0b58b19

截图功能介绍

创建Canvas,设置大小为实际视频的大小,根据视频的镜像方向,对Canvas做相应的处理,代码如下:

var canvas = document.createElement('canvas'), 
    video = that._player.tag,
canvas.width =video.videoWidth,//视频原有尺寸 
canvas.height = video.videoHeight;//视频原有尺寸 
var ctx = canvas.getContext('2d');
ctx.save();  
//判断用户是否对视频做过镜像
var image = that._player.getImage();
if(image == "vertical")//垂直镜像
{
   ctx.translate(0,canvas.height);
   ctx.scale(1, -1);
}
else if(image == "horizon")//水平镜像
{
    ctx.translate(canvas.width, 0);
    ctx.scale(-1, 1);
}
//视频的当前画面渲染到画布上
ctx.drawImage(video, 0, 0, w, h);
ctx.restore();  
水印功能介绍

Aliplayer水印支持添加的位置、字体、画笔颜色和填充样式,在创建播放器的时候指定,代码如下:

let drawText =>(ctx, options)
{
    var watermark = options.snapshotWatermark;
    if(watermark && watermark.text)
    {
        //设置字体样式
        ctx.font = watermark.font;
        //设置字体填充颜色
        if(watermark.fillColor)
        {
            ctx.fillStyle = watermark.fillColor;
            ctx.fillText(watermark.text, watermark.left, watermark.top);
        }
        //设置画笔颜色
        if(watermark.strokeColor)
        {
            ctx.strokeStyle = watermark.strokeColor;
            ctx.strokeText(watermark.text, watermark.left, watermark.top);
        }
        //画布上画出水印
        ctx.stroke();
    }
}

目录
相关文章
阿里云 Aliplayer高级功能介绍
Aliplayer除了一些基本功能,还有一些高级的功能,可能需要云端配合才可以使用,或者播放器本身需要做更多的配置,希望写一些文件介绍如何使用和介绍一下简单的实现原来,让用户了解这些功能,更好的使用播放器,文章不仅介绍内置的功能,还会包含通过插件写的其他功能。
37971 0
阿里云 Aliplayer高级功能介绍(六):进度条标记
基本介绍 Aliplayer在进度条上提示时间和缩略图功能外,还可以进行视频内容的提示打点,当然不止是进度条上显示打点的内容,还提供一组接口,方便用户进行打点时间和内容的获取, 基本UI如下图所示: 接口和属性介绍 播放器提供了progressMarkers属性,是一个数组类型,每一条记录包含o.
13681 1
阿里云移动端播放器高级功能---直播时移
基本介绍 通常都知道直播是无法seek拖动的,那么针对在直播中想回看之前直播过的内容的用户来说,直播时移就能派上用场。我们阿里云播放器支持了直播时移功能,用户能较为方面和快速的使用直播时移的功能。 先来看一下直播时移的介绍:时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协...
11148 0
|
数据安全/隐私保护
阿里云移动端播放器高级功能---视频下载
基本介绍 优酷、爱奇艺、腾讯等主流的视频类App都有视频离线下载的功能,主要目的是在wifi下将视频离线在本地,然后在无网或者4G的情况下去观看离线视频。那么阿里云播放器也提供了视频下载的功能。这个功能主要针对的是点播视频,也就是vid播放的视频的下载。
6246 0
|
Web App开发 UED iOS开发
阿里云 Aliplayer高级功能介绍(九):自动播放体验
经常会碰到客户询问,为什么我设置了autoplay为true,但是没有自动播放,每次都要向客户解释这个是浏览器从用户体验角度考虑做的限制,客户会继续询问那我要怎么做? 针对这个问题Aliplayer也专们做过优化,提供一些方式让客户能更好的处理这种情况。
9308 0
阿里云 Aliplayer高级功能介绍(四):直播时移
时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协议向播放用户分发,用户请求的m3u8播放文件中包含不断刷新的TS分片地址;对于常规的HLS直播而言,TS分片地址及相应的TS文件并不持久化保存,导致当前时间之前的直播视频内容无法回溯;而对于开通了时移功能的HLS直播而言,TS分片地址及相应TS文件会分别在数据库和OSS中持久化保存最长15天,使得回溯从直播开始时间到当前时间之间的视频内容成为可能。
5048 0
阿里云移动端播放器高级功能---UI播放器
用户想要实现一个视频播放除了要集成我们播放器SDK之外,还需要做一些UI交互的东西。要实现一个完整的视频播放还是需要做很多工作的。那么我们提供了一套完整的UI播放器,用户可以非常快速的集成进去来实现完整的播放器功能。
5786 0
|
安全 数据安全/隐私保护 对象存储
智能媒体管理产品文档转换/预览功能介绍(3)---预览原理
智能媒体管理产品提供了 Cloud Native 架构的文档转换/预览服务,本文介绍其中的预览原理和使用方法。
7147 1
|
前端开发 JavaScript
直播短视频源码,动态需要用到点击图片展示预览效果的功能
直播短视频源码,动态需要用到点击图片展示预览效果的功能
338 0
|
开发工具 Android开发 iOS开发
阿里云移动端播放器高级功能介绍
阿里云播放器SDK包括一些最基本常用的功能,如倍数播放、cache内seek、循环播放等之外,还包括一些更加高级的一些功能。这些功能可以满足不同用户在不同场景下的使用。下面将会逐一对这些功能做一些介绍,希望让用户更了解阿里云播放器SDK,更好的使用播放器来实现他们的需求。
3481 0