canvas-视频绘制

通过Canvas元素来实时绘制一个视频帧,并在视频帧上叠加一个图片的功能可以当作水印。

  1. 获取Canvas元素

    复制代码
    `let canvas = document.getElementById('canvas')`

    通过getElementById函数获取页面中ID为canvas的Canvas元素,并将其存储在变量canvas中。

  2. 检查Canvas是否支持getContext方法

    复制代码
    `if(canvas.getContext){`

    检查Canvas元素是否支持getContext方法,这是绘制图形和图像的基础。

  3. 获取2D渲染上下文

    复制代码
    `let context = canvas.getContext('2d')`

    通过Canvas的getContext方法获取一个2D渲染上下文(context),用于后续的绘图操作。

  4. 获取按钮元素

    复制代码
    `let btn = document.getElementById('btn')`

    通过getElementById函数获取页面中ID为btn的按钮元素,并将其存储在变量btn中。

  5. 创建视频元素并设置其源

    复制代码
    `let video = document.createElement("video")
    video.src = './视频-css/横版-原神-昼.mp4'`

    动态创建一个video元素,并设置其src属性为指定视频文件的路径。注意,这里使用的是相对路径。

  6. 创建并设置图片元素

    复制代码
    `let img = new Image()
    img.src = "./视频-css/BgSub_favicon.png"`

    通过new Image()创建一个新的图片元素,并设置其src属性为指定图片的路径。同样,这里使用的是相对路径。

  7. 为按钮添加点击事件监听器

    复制代码
    `btn.onclick = function(){
    video.play()
    render()
    }`

    为按钮添加了一个点击事件监听器,当按钮被点击时,会调用video.play()来播放视频,并调用render函数开始绘制。

  8. 绘制函数(render

    复制代码
    `function render(){
    context.drawImage(video,0,0,600,300)
    context.drawImage(img,30,30,80,80)
    requestAnimationFrame(render)
    }`

    render函数负责绘制操作。首先,使用context.drawImage方法将视频帧绘制到Canvas上,并指定其位置和大小(0,0,600,300)。然后,在同一Canvas上绘制图片,并指定其位置和大小(30,30,80,80)。最后,使用requestAnimationFrame(render)实现动画效果,即不断调用render函数以更新Canvas上的图像。

  • let video = document.querySelector("video"),可以通过querySelector获取页面中的视频元素,上面的为动态创建视频元素。
  • 由于视频加载和播放可能需要一些时间,因此在实际应用中,可能需要添加一些额外的逻辑来处理视频未就绪或未播放完成的情况。例如,可以在绘制前检查视频的readyState属性,或者监听视频的loadedmetadatacanplaythrough等事件。
  • 代码中使用的相对路径(如'./视频-css/横版-原神-昼.mp4')需要确保与HTML文件相对的位置正确,否则视频将无法加载。

下面是效果图

相关推荐
沐禾安信13 小时前
AVI 视频打不开?2026 四款转 MP4 工具封神
音视频·电脑录屏
兵叔物联15 小时前
基于FFmpeg的短视频自动剪辑工具
ffmpeg·音视频
AORUO奥偌15 小时前
从“拼凑”到“集成”:音视频系统如何重塑弱电智能化建设逻辑
音视频·公共广播系统·音视频系统·多媒体会议与ip广播系统·多媒体会议系统
禹亮科技16 小时前
大型国企会议室音视频集成实战:3间120㎡空间Poly G7500+LED大屏+讯飞多语言会议系统落地方案
音视频·视频会议系统集成·上海禹亮科技·讯飞听见多语言会议系统·poly g7500
音视频牛哥18 小时前
SmartMediaKit macOS版RTSP/RTMP低延迟播放器:技术架构、核心能力与应用实践
音视频·低延迟rtsp播放器·macos直播播放器·macos rtsp播放器·macos rtmp播放器·rtsp播放器mac版·rtmp播放器mac版
潜创微科技20 小时前
沁恒CH9339:USB3.0超高速对拷,两台电脑一根线共享一切
音视频
Cxiaomu20 小时前
从 TRTC Demo 到独立音视频服务:React + TRTC Web SDK 服务化实践
前端·react.js·音视频
EasyGBS1 天前
政务视频资源汇聚:国标GB28181视频平台EasyGBS在“一网统管”中的定位和落地路径
网络·音视频·政务
蝉蜕日记2 天前
视频压缩 v1.1.31:高效压缩,无损画质,释放存储空间
音视频·生活·视频编解码·视频·软件需求
lumengabc2 天前
视频制作流程MP4旁白语音生成裁剪视频压缩python处理ppt转视频M4a格式
音视频