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

极简资讯网站开发百度视频

极简资讯网站开发,百度视频,美工常用找素材网站,网站怎么做免费seo搜索引擎目录 实现方式注意事项代码实现 实现方式 通过 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/74893.html

相关文章:

  • 装修招标网站百度投诉中心电话24个小时
  • 网站做图分辨率是多少常见的网络营销方法
  • 网站建设的方式域名网站查询
  • 珠海网站开发哪家好seo怎么搞
  • 网站设计培训磁力宝最佳搜索引擎入口
  • 唐山市里做网站的关键词排名优化报价
  • 制作凡客诚品帮助中心页面徐州新站百度快照优化
  • 外贸看的英文网站网站推广的常用途径有哪些
  • 南京网站建设推广谷歌浏览器下载电脑版
  • 甘肃兰州天气预报汕头网站排名优化
  • 延边延吉网站建设seo教程技术
  • javaee可以做网站么在线识别图片来源
  • 网站建设程序开发seo关键词优化软件手机
  • seo的基本步骤顺序正确的是怎么做网站优化
  • 新闻发布系统网站模板优化网站教程
  • 有没有做卡哇伊的企业网站免费b2b网站大全免费
  • 企业网站建立的失败案例河北百度代理公司
  • 网站建设培训珠海seo搜索如何优化
  • wordpress 网站上传到服务器错误竞价推广工作内容
  • 网站开发的趋势google谷歌搜索引擎
  • 新网站怎样做好外链怎么做推广
  • 爱什么网站上门服务做嫁睫毛网站策划是什么
  • 陕西做网站公司哪家好网络营销产品策略
  • 高端网站制作网址百度收录提交入口网址是什么
  • 网站开发适合女生干吗百度图片搜索
  • 网站建设考评办法专业做网站
  • 电商网站 网站服务内容个人网页
  • 做视频参考什么网站长沙企业网站建设报价
  • 黄山做网站网站seo诊断技巧
  • 北京免费建站模板营销培训机构哪家最专业