HTML5中video标签与canvas绘图的使用

举报
风吹稻花香 发表于 2021/06/05 01:28:38 2021/06/05
【摘要】   原文:https://www.cnblogs.com/zhuzhenwei918/p/6822834.html video标签的使用   video标签定义视频, 它是html5中的新标签, 它的属性如下(参考自文档):    domo01 <!DOCTYPE html><html lang="en"><head&g...

 

原文:https://www.cnblogs.com/zhuzhenwei918/p/6822834.html

video标签的使用 

 video标签定义视频, 它是html5中的新标签, 它的属性如下(参考自文档):

  

domo01


  
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>demo01</title>
  6. </head>
  7. <body>
  8. <video src="madashuai.mp4" loop="loop" autoplay="autoplay" controls="controls" width="800" height="500"></video>
  9. </body>
  10. </html>

复制代码

  • src 即视频的路径
  • loop 即是否循环,即播放结束之后继续播放
  • autoplay 即准备就绪之后就播放
  • controls 即出现控制控件,如果没有则无开始暂停等按钮
  • width和height可以控制video的宽度和高度

 

canvas中drawImage的使用

即接受的第一个参数可以是img,也可以是video,还可以是canvas, 后面的参数是用于剪切和控制宽高。 

domo02:

复制代码


  
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>demo01</title>
  6. </head>
  7. <body>
  8. <video id="myVideo" src="madashuai.mp4" loop="loop" autoplay="autoplay" controls="controls"></video>
  9. <br>
  10. <button id="snapScreen">截屏</button>
  11. <canvas id="mycanvas" width="400" height="240"></canvas>
  12. <script>
  13. var mycanvas = document.getElementById('mycanvas').getContext('2d'),
  14. snapScreen = document.getElementById('snapScreen'),
  15. video = document.getElementById('myVideo');
  16. snapScreen.onclick = function () {
  17. mycanvas.drawImage(video, 0, 0, 400, 240);
  18. }
  19. </script>
  20. </body>
  21. </html>

复制代码

 

  • 我们先获取到canvas环境,然后点击按钮后就可以将当前视频截屏。

 

 

 

 

navigator.mediaDevices.getUserMedia()

  通过这个方法,我们可以获得使用本地摄像头的权利,官方文档

  使用的时候一般都是和video标签向结合,即摄像头在video上显示出来。

 

demo03: 

复制代码


  
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>demo01</title>
  6. </head>
  7. <body>
  8. <video id="myVideo" src=""></video>
  9. <script>
  10. navigator.mediaDevices.getUserMedia({
  11. // audio: true, // 这里也可以开启声音
  12. video: true
  13. }).then(function (mediaStream) {
  14. var myVideo = document.getElementById('myVideo');
  15. myVideo.srcObject = mediaStream;
  16. myVideo.onloadedmetadata = function () {
  17. myVideo.controls = "controls";
  18. myVideo.play();
  19. }
  20. });
  21. </script>
  22. </body>
  23. </html>
  • 注意: 这里的mediaStream的使用类似于es6中的promise的用法,即获得result之后就传递给了then作为参数使用
  • 把视频源赋值给video标签的srcObject标签就可以在video中显示了。
  • 其中的onloadedmetadata事件是在视频文件加载好了之后就会触发。

 

 

 

下面我们就可以把摄像头和video和canvas结合起来,这样就可以截屏了~

demo04


  
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>demo01</title>
  6. </head>
  7. <body>
  8. <video id="myVideo" width="500" height="400" src=""></video>
  9. <button id="snapScreen">截屏</button>
  10. <canvas id="myCanvas" width="500" height="400"></canvas>
  11. <script>
  12. var myVideo = document.getElementById('myVideo');
  13. navigator.mediaDevices.getUserMedia({
  14. video: true
  15. }).then(function (mediaStream) {
  16. myVideo.srcObject = mediaStream;
  17. myVideo.onloadedmetadata = function () {
  18. myVideo.controls = "controls";
  19. myVideo.play();
  20. }
  21. });
  22. var snapScreen = document.getElementById('snapScreen'),
  23. canvas = document.getElementById('myCanvas').getContext('2d');
  24. snapScreen.onclick = function () {
  25. canvas.drawImage(myVideo, 0, 0);
  26. }
  27. </script>
  28. </body>
  29. </html>

复制代码

 

下面这个还是比较有意思的:

demo05

复制代码


  
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>demo01</title>
  6. </head>
  7. <body>
  8. <video class="myvideos" src=""></video>
  9. <video class="myvideos" src=""></video>
  10. <video class="myvideos" src=""></video>
  11. <video class="myvideos" src=""></video>
  12. <video class="myvideos" src=""></video>
  13. <video class="myvideos" src=""></video>
  14. <video class="myvideos" src=""></video>
  15. <video class="myvideos" src=""></video>
  16. <video class="myvideos" src=""></video>
  17. <video class="myvideos" src=""></video>
  18. <video class="myvideos" src=""></video>
  19. <video class="myvideos" src=""></video>
  20. <video class="myvideos" src=""></video>
  21. <video class="myvideos" src=""></video>
  22. <video class="myvideos" src=""></video>
  23. <script>
  24. var myvideos = document.getElementsByClassName('myvideos');
  25. navigator.mediaDevices.getUserMedia({
  26. video: true
  27. }).then(function (mediaStream) {
  28. for (var i = 0; i < myvideos.length; i++ ) {
  29. myvideos[i].srcObject = mediaStream;
  30. myvideos[i].width = 300;
  31. myvideos[i].play();
  32. }
  33. });
  34. </script>
  35. </body>
  36. </html>

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/88181806

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。