小程序 canvas画video暂停时的图像

要做的功能就是当video暂停时把当前的图像用canvas画下来

<view class="content">
        <video 
            id="myVideo"
            src="{{items.fileUrl}}"
            bindtap="bindClckVideo"
            controls="{{true}}"
            show-fullscreen-btn="{{false}}"
            show-play-btn="{{false}}"
            show-center-play-btn="{{false}}"
            enable-progress-gesture="{{false}}"
            enable-play-gesture="{{true}}"
            loop="{{true}}"
            autoplay="{{true}}"
            object-fit="{{items.coverType == 1 ? 'cover' : 'contain'}}"
            custom-cache="{{false}}"
            bindcontrolstoggle="bindcontrolstoggle"
            bindloadedmetadata="bindloadedmetadata"
        >
            <image wx:if="{{!isPlaying}}" class="mv_image_player" src="../../../images/player.png"></image>
            <canvas id="cvs1" type="2d" class="map" style='width:{{canvasWidth}}px; height:{{canvasHeight}}px' canvas-id="cvs1" disable-scroll="true" ></canvas>
            
        </video>
    </view>

 

const app = getApp();


Page({
    data: {
      
        isPlaying: true,
        imgUrl: '',
        sceneNum:0,
        canvasWidth: '',
        canvasHeight: ''
    },
    onLoad: function (option) {
       
        
    },
   
  
    bindMark() {
        
        let that = this
      
       
        wx.showLoading({
            title: '请稍等',
        })
        // 设备像素
        const dpr = wx.getSystemInfoSync().pixelRatio
        console.log(dpr)
        wx.createSelectorQuery().select('#myVideo').context(res => {
            // 获取myvideo
            const video = res.context
            wx.createSelectorQuery().selectAll('#cvs1').node(res => {
                const ctx1 = res[0].node.getContext('2d')
                const _canvas = res[0].node;
                res[0].node.width = 300 * dpr
                res[0].node.height = 150 * dpr
                ctx1.drawImage(video, 0, 0, res[0].node.width, res[0].node.height);
                console.log('画完图了')
            
                wx.canvasToTempFilePath({
                    canvas: _canvas,
                    success: function (res) {
                        var tempFilePath = res.tempFilePath;
                        that.data.sceneNum++
                        if(that.data.sceneNum ===1){
                            that.bindMark()
                            return
                        }
                      
                        console.log(tempFilePath);
                        that.setData({
                            img:tempFilePath
                        })
                        wx.hideLoading()
                        wx.navigateTo({
                            url: '/pagesubject/sceneVideo/sceneVideo?tempFilePath=' + tempFilePath,
                        })
                    },
                    fail: function (res) {
                        console.log(res);
                    }
                }, that)

            }).exec()
        }).exec()
    },
 
    onHide() {

    },
    onShow() {
        //选择id
        var that = this;
        wx.createSelectorQuery().selectAll('#cvs1').node(res => {
            console.log('select canvas', res)
            const c = res[0].node
            const ctx1 = res[0].node.getContext('2d')
            console.log('清除canvas画布数据宽高:', c.width, c.height)
            ctx1.clearRect(0, 0, c.width, c.height)
            // 给canvas宽高
            var query = wx.createSelectorQuery();
            query.select('#myVideo').boundingClientRect(function (rect) {
                console.log('设置canvas高度:', rect.width, rect.height)
                that.setData({
                    canvasHeight: rect.height,
                    canvasWidth: rect.width,
                })
            }).exec();
        }).exec()





    },

})

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值