当前位置: 首页 > wzjs >正文

网站开发费用鉴定网络营销课程论文

网站开发费用鉴定,网络营销课程论文,网站必须做等保合规,青海最新消息今天目录 实现方式注意事项代码实现 实现方式 通过 video 元素canvas 元素的方式实现 生成 video 和 canvas 元素当 video 元素资源加载完成时,将 video 元素绘制到 canvas 画布上,然后通过 toBlob 或则 toDataURL 获取到对应的封面图片资源 注意事项 vid…

目录

  • 实现方式
  • 注意事项
  • 代码实现

实现方式

通过 video 元素+canvas 元素的方式实现

  • 生成 video 和 canvas 元素
  • 当 video 元素资源加载完成时,将 video 元素绘制到 canvas 画布上,然后通过 toBlob 或则 toDataURL 获取到对应的封面图片资源

注意事项

video 视频资源为同域或支持跨域

视频链接跨域时有两种解决办法:

  • video 元素添加跨域属性,在 video 元素上设置跨域标识。服务器 CORS 配置支持跨域的对应请求头
let videoRef = document.createElement("video");
videoRef.crossOrigin = "anonymous"; // 关键设置
// 确保视频服务器返回以下响应头Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Allow-Headers: Content-Type
  • 视频资源上传同域服务器,避免跨域

代码实现

<template><div ref="app"></div>
</template><script lang="ts" setup>import {ref, onMounted} from "vue";
const app = ref()
const initCanvas = async()=> {let videoRef = document.createElement("video");let videoWidth: numberlet videoHeight:numberconst canvasRef = document.createElement("canvas");// 视频资源链接,需要保证该资源支持跨域videoRef.src = "*******"// app.value.appendChild(videoRef);videoRef.muted = truevideoRef.controls = true;videoRef.preload = 'auto';videoRef.addEventListener("loadeddata", () => {videoWidth = videoRef.videoWidthvideoHeight = videoRef.videoHeight// app.value.appendChild(canvasRef);canvasRef.width = videoWidth;canvasRef.height = videoHeight;const ctx = canvasRef.getContext('2d')ctx?.drawImage(videoRef, 0, 0, canvasRef.width, canvasRef.height);// 生成封面图片链接const coverUrl = canvasRef.toDataURL("image/png");})
}onMounted(() => {initCanvas();
})
</script>
  • 为了避免loadeddata 事件触发时,视频资源可能并没加载完全,导致 canvas 绘制失败,也可以通过requestAnimationFrame轮询检测视频就绪状态
<template><div ref="app"></div>
</template><script lang="ts" setup>import {ref, onMounted} from "vue";
const app = ref()
const initCanvas = async()=> {let videoRef = document.createElement("video");let videoWidth: numberlet videoHeight:numberconst canvasRef = document.createElement("canvas");// 视频资源链接,需要保证该资源支持跨域videoRef.src = "*****"app.value.appendChild(videoRef);videoRef.muted = truevideoRef.controls = true;videoRef.preload = 'auto';videoRef.addEventListener("loadedmetadata", () => {videoWidth = videoRef.videoWidthvideoHeight = videoRef.videoHeightapp.value.appendChild(canvasRef);canvasRef.width = videoWidth;canvasRef.height = videoHeight;const ctx = canvasRef.getContext('2d')const drawFrame = () => {if(videoRef.readyState >= HTMLMediaElement.HAVE_CURRENT_DATA) {ctx?.drawImage(videoRef, 0, 0, canvasRef.width, canvasRef.height);// 生成封面图片链接const coverUrl = canvasRef.toDataURL("image/png");}else {requestAnimationFrame(drawFrame)}}drawFrame()})
}onMounted(() => {initCanvas();
})
</script>
http://www.dtcms.com/wzjs/349393.html

相关文章:

  • 动态网站开发流程新冠疫情最新消息今天
  • 保定聊城网站建设推广项目
  • 临沂哪家做网站最好百度建站官网
  • 网站源码如何保存app推广代理
  • 建设银行网站账户注销深圳企业seo
  • wordpress仿站函数关键词搜索引擎工具爱站
  • 旅行社b2b网站建设方案新网站快速收录
  • 济南广告设计公司前十名黑帽seo
  • 网站后台别人制作深圳品牌seo
  • 西宁网站建设的企业管理培训
  • 门户网站报价方案成全在线观看免费高清动漫
  • 网站建设供应商税点关键词批量调词 软件
  • 显示网站建设中天津关键词优化网站
  • 建com网站win7系统优化工具
  • 福州做网站的哪家好北京疫情最新消息
  • 怎么给网站添加统计代码网站定制
  • 做网站如何赚钱网站关键词优化排名软件系统
  • 网站的模版要怎么重新做优化大师官方免费
  • 科技公司网站开发网络营销策划师
  • 让网站建设便宜到底株洲今日头条新闻
  • 查看网站速度电脑办公软件培训班
  • 上海网站建设与设计网站seo优化怎么做
  • 吃的网站要怎么做云南百度公司
  • 创建网站数据库站长统计app下载
  • 建站快车的应用场景百度知道官网手机版
  • 沈阳建站程序宁波网络推广团队
  • 三门峡网站建设适合小学生的最新新闻
  • 东莞网站竞价推广运营广东广州网点快速网站建设
  • 建设信息港查询抖音seo排名系统
  • 文本资料分享网站 建设百度小说排名