H5上传视频,截取视频第一帧作为视频封面,遇到的坑

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传视频,进行预览,截取图片,并且获取时长</title>
</head>
<body>
<input type="file" οnchange="changFile(this)">
<div id="showVideo">
</div>
<br>
<br>
<br>
<br>
<div>
    <img id="image" width="50%" height="auto">
</div>
<button οnclick="manualCapture()">点击截图</button><br>
<canvas id="canvas_"></canvas>
<script>
    function changFile(ele) {
        var videoFile = ele.files[0];
        var url = URL.createObjectURL(videoFile);
        console.log(url);
        var showVideo = document.getElementById("showVideo");
        var htmls = ' <video width="50%" id="video" height="auto" controls> <source src="' + url + '">您的浏览器不支持 HTML5 video 元素。</video>';
        showVideo.innerHTML = htmls;
        //添加监听事件
        //当当前帧的数据已加载,但没有足够的数据来播放指定音频/视频的下一帧时,会发生 loadeddata 事件。
        document.getElementById("video").addEventListener("loadeddata", captureImage);
    }
    function captureImage() {
//        alert("demo7");
        var scale = 0.8; //质量比例
        var video = document.getElementById("video");
        var canvas = document.createElement("canvas");
        //计算视频宽高比
        var proportion = video.clientHeight / video.clientWidth;
        //计算当前窗口的宽度
        var w = document.body.clientWidth
        var h = w * proportion;
        canvas.getContext("2d").drawImage(video, 0, 0, 300, 400);
        var img = document.getElementById("image");
        var len = canvas.toDataURL("image/jpg");
        len = len.length / 100;
        img.src = canvas.toDataURL("image/jpg");
    }

    function manualCapture() {
        var video_ = document.getElementById("video");
        //计算视频宽高比
        var proportion = video_.clientHeight / video_.clientWidth;
        var canvas_ = document.getElementById("canvas_");
        var ctx_ = canvas_.getContext("2d");
        ctx_.drawImage(video_,0,0,400,400*proportion);
    }
</script>
</body>
</html>
代码如上,这个代码是要在手机微信浏览器上运行的,本来想是在选择完视频文件后,截取第一帧,作为视频封面,在pc浏览器上测试没问题,视频能预览,也能截取图片。但是到了手机浏览器上就不行了,视频能预览,但是看不到截取的图片,之前一直以为是没有截取到图片,但是后来其实是截取到图片了,但是视频没有播放,所以截取到的图片就是一张空白图片,和手机背景白色混为一起了,根本就看不出来。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值