JS获取上传视频第一帧图片与视频时长

  • JS 获取视频时长与视频第一帧图片
                /**
                 * 将秒转换为 分:秒
                 * s int 秒数
                 */
                function s_to_hs(s){
                    //计算分钟
                    //算法:将秒数除以60,然后下舍入,既得到分钟数
                    var h;
                    h  =   Math.floor(s/60);
                    //计算秒
                    //算法:取得秒%60的余数,既得到秒数
                    s  =   s%60;
                    s  =   Math.floor(s);
                    //将变量转换为字符串
                    h    +=    '';
                    s    +=    '';
                    //如果只有一位数,前面增加一个0
                    h  =   (h.length==1)?'0'+h:h;
                    s  =   (s.length==1)?'0'+s:s;
                    return h+':'+s;
                }
                $('input[name="row[video]"]').change(function () {
                    var url = $(this).val();
                    // var video = new Audio(url);
                    var duration;
                    var video = document.createElement("video");
                    video.setAttribute('crossOrigin', 'anonymous');//处理跨域
                    video.setAttribute('src', url);
                    video.setAttribute('width', 400);
                    video.setAttribute('height', 240);
                    video.setAttribute('preload', 'auto');

                    video.addEventListener("loadedmetadata", function (_event) {
                        duration = s_to_hs(video.duration);
                        $('#c-video_duration').val(duration); // 视频时长
                    });
                    video.addEventListener("loadeddata", function () {
                        setTimeout(function () {
                            var canvas = document.createElement("canvas"),
                                width = video.width, //canvas的尺寸和图片一样
                                height = video.height;
                            canvas.width = width;
                            canvas.height = height;
                            canvas.getContext("2d").drawImage(video, 0, 0, width, height); //绘制canvas
                            var dataURL = canvas.toDataURL('image/jpeg'); //转换为base64
                            // console.log(video, dataURL);
                            $('#p-video').find('.thumbnail').find('img').attr('src', dataURL);
                            $('#c-video_img').val(dataURL); 
                        }, 500);
                    });
                });
  • php 处理视频第一帧封面图
        if (file_exists(ROOT_PATH . DS . 'public' . $params['video'])) {
            $mime_type = mime_content_type(ROOT_PATH . DS . 'public' . $params['video']);
            if (strpos($mime_type, 'video') === 0) {
                if (!empty($params['video_img']) && empty($params['image'])) {
                    // 去除头部
                    $base64 = substr(strstr($params['video_img'],','),1);
                    $data = base64_decode($base64);
                    $path = DS . 'uploads' . DS . date('Ymd') . '_videoimg' . DS . time() . '.png';
                    if (!is_dir(ROOT_PATH . 'public' . DS . 'uploads' . DS . date('Ymd') . '_videoimg')) {
                        @mkdir(ROOT_PATH . 'public' . DS . 'uploads' . DS . date('Ymd') . '_videoimg');
                    }
                    file_put_contents(ROOT_PATH . 'public' . $path, $data);
                    $params['image'] = $path;
                }
            } else {
                if (empty($params['image'])) {
                    $params['image'] = '/assets/img/audio.png';
                }
            }
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值