使用原生 Canvas 播放视频

在使用网页播放视屏是常常会有写原生视频标签无法做到的事,比如在手机播放时可能会被手机播放器接管播放,或者加些弹幕,或者自定义些控件。

今天就写了个简单版的 Video 标签 转 Canvas 播放视频的代码功能,该对象使用非常简单

// 使用方法:1
var video = document.querySelector("video") // 获取到视频标签
// 实例化 Canvas 对象并播放,该操作会自动创建一个 Canvas 标签放到 video 标签同级并隐鲹原有的 video 标签
var v2c = new Video2Canvas(video).play(); 

// 使用方法:2
var video = document.querySelector("video") // 获取到视频标签
var canvas = document.querySelector("canvas") // 获取到自己准备好的canvas标签
// 实例化 Canvas 对象并播放
var v2c = new Video2Canvas(video, canvas).play(); 

这是全部代码


/*
 * @Author: Summer
 * @LastEditors: Summer
 * @Description: 
 * @Date: 2022-04-20 14:12:58 +0800
 * @LastEditTime: 2022-04-20 15:41:17 +0800
 * @FilePath: \test\index.js
 */
(function(){
    

window.Video2Canvas = class Video2Canvas {

    static
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp中使用Canvas组件播放视频,需要遵循以下步骤: 1. 在页面中添加Canvas组件。 2. 在Canvas组件的created生命周期中创建Canvas绘图上下文。 3. 在Canvas组件的ready生命周期中获取视频对象并设置视频播放的相关属性。 4. 在Canvas组件的touchstart事件中开始播放视频。 5. 在视频播放过程中,通过Canvas绘图上下文的drawImage方法将视频帧绘制到Canvas上。 以下是示例代码: ``` <template> <canvas canvas-id="myCanvas" @touchstart="playVideo"></canvas> </template> <script> export default { onReady() { // 获取Canvas绘图上下文 this.context = uni.createCanvasContext('myCanvas'); // 获取视频对象 this.video = uni.createVideoContext('myVideo'); // 设置视频播放相关属性 this.video.src = 'http://example.com/video.mp4'; this.video.controls = false; this.video.autoplay = false; this.video.loop = true; }, methods: { playVideo() { // 开始播放视频 this.video.play(); }, drawFrame() { // 绘制视频帧到Canvas上 this.context.drawImage(this.video, 0, 0, 300, 200); this.context.draw(); } }, mounted() { // 每隔16毫秒绘制一帧视频Canvas上 setInterval(() => { this.drawFrame(); }, 16); } } </script> ``` 在这个示例中,我们使用Canvas组件绘制视频帧。在ready生命周期中获取视频对象和Canvas绘图上下文,并设置视频播放相关属性。在touchstart事件中开始播放视频。在mounted生命周期中,每隔16毫秒绘制一帧视频Canvas上。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值