Video.js 截图 Failed to execute ‘drawImage‘ on ‘CanvasRenderingContext2D‘

Video.js 截图 Failed to execute 'drawImage' on 'CanvasRenderingContext2D'

   流媒体服务有一项功能是抓图,也就是从正在播放的视频流中获取图片。这个功能可以在服务

端实现,具体的思路也比较简单从视频流中获取一帧关键帧,解码后保存成一张图片并推送给请求

客户端就可以了。服务端实现简单但存在一个缺点-:实时性不高。经常抓到的图是数秒以后的图片。

其原因是客户端有播放延时,一般情况下公网下Web客户端播放rtmp及rtsp流延时在1-2S之间,播放

hls流延时在3-5S,这就意味着从正在播放的rtmp及rtsp流中抓图,基本上是1-2S以后的图片,从正

在播放的hls流抓图 基本上是3-5秒以后图片。为此,再提供一种抓图模式:Web前端抓图。

     H5 可以直接利用“video标签” 截图,基本代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>视频截图</title>

 

<script>

window.onload = function () {

  var button = document.querySelectorAll('.screen')[0];

  var video = document.querySelectorAll('video')[0];

  var canvas = document.querySelectorAll('canvas')[0];

  var ctx = canvas.getContext('2d');

  var width = 640;

  var height = 480;

     

  canvas.width = width;

  canvas.height = height;

 

  video.src = ”http://192.168.1.102:12345/cgmedia/hls/getstream/addr=live/34020000001320000001@192.168.1.64_5060/34020000001320000001@192.168.1.64_5060.m3u8“;

  video.width = width;

  video.height = height;

  video.controls = true;

  video.autoplay = true;

 

  button.onclick = function () {

    ctx.drawImage(video, 0, 0, width, height);

     

  };

};

</script>

</head>

 

</html>

    如果视频使用video.js播放请注意drawImage方法第一个参数不能直接传video,需要传video.childNodes[0] 

 否则会获取图片失败,报“Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The provided  value

 is not of type '(CSSImageValue or HTMLImageElement or SVGImageElement or HTMLVide oElement or 

HTMLCanvasElement or ImageBitmap or OffscreenCanvas)'错误。

 

如需交流可加QQ群766718184,1038388075 或者QQ3501870,

视频下载地址:http://www.chungen90.com/?news_33/

 Demo下载地址: http://www.chungen90.com/?news_34

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值