js获取视频的大小,宽高,时间,获取视频的第一针

<!DOCTYPE html>
<html>
<head>
    <title>Upload Video Information</title>
</head>
<body>
    <input type="file" id="fileInput">
    <p>Video Width: <span id="widthDisplay"></span></p>
    <p>Video Height: <span id="heightDisplay"></span></p>
    <p>Video Duration: <span id="durationDisplay"></span></p>
    <p>Video Size: <span id="sizeDisplay"></span></p>
    <img id="thumbnail"  crossorigin="anonymous">
    <script>
        const fileInput = document.getElementById("fileInput");
        const widthDisplay = document.getElementById("widthDisplay");
        const heightDisplay = document.getElementById("heightDisplay");
        const durationDisplay = document.getElementById("durationDisplay");
        const sizeDisplay = document.getElementById("sizeDisplay");
        const thumbnail = document.getElementById("thumbnail");

        let thumbnailBlobURL = null;

        fileInput.addEventListener("change", function(event) {
            const selectedFile = event.target.files[0];
            if (selectedFile) {
                const videoElement = document.createElement("video");
                videoElement.preload = "metadata";
                videoElement.src = URL.createObjectURL(selectedFile);
                videoElement.controls="controls"
                videoElement.autoplay=true
                videoElement.muted=true

                videoElement.addEventListener("loadedmetadata", async function() {
                    const videoWidth = this.videoWidth;
                    const videoHeight = this.videoHeight;
                    const videoDuration = this.duration;

                    const fileSize = selectedFile.size;
                    const fileSizeDisplay = formatFileSize(fileSize);

                    widthDisplay.textContent = videoWidth + " pixels";
                    heightDisplay.textContent = videoHeight + " pixels";
                    durationDisplay.textContent = videoDuration.toFixed(2) + " seconds";
                    sizeDisplay.textContent = fileSizeDisplay;
                    document.body.appendChild(videoElement)
                    // 获取视频的第一帧画面
                    videoElement.currentTime = 0;
                    videoDemo = document.getElementById('videoDemo')
                    console.info(videoDemo)
                    thumbnailBlobURL = await generateThumbnail(videoElement);
                    thumbnail.src = thumbnailBlobURL;

                    // 释放 URL.createObjectURL 创建的 URL
                    URL.revokeObjectURL(videoElement.src);
                });
            }
        });

        function formatFileSize(bytes) {
            if (bytes === 0) return "0 Bytes";

            const sizes = ["Bytes", "KB", "MB", "GB", "TB"];
            const i = Math.floor(Math.log(bytes) / Math.log(1024));
            return parseFloat((bytes / Math.pow(1024, i)).toFixed(2)) + " " + sizes[i];
        }

        async function generateThumbnail(videoElement) {
            return new Promise((resolve) => {
                debugger
                const canvas = document.createElement("canvas");
                canvas.width = videoElement.videoWidth;
                canvas.height = videoElement.videoHeight;

                const ctx = canvas.getContext("2d");
                ctx.drawImage(videoElement, 0, 0, canvas.width, canvas.height);

                canvas.toBlob((blob) => {
                    const url = URL.createObjectURL(blob);
                    resolve(url);
                }, "image/jpeg");
            });
        }
    </script>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript 中,可以使用 `HTMLMediaElement` 对象的 `currentTime` 属性和 `drawImage` 方法来获取视频第一帧图片。具体步骤如下: 1. 创建一个 `video` 元素,并设置其 `src` 属性为视频的 URL: ```javascript let video = document.createElement('video'); video.src = 'path/to/video.mp4'; ``` 2. 监听 `loadedmetadata` 事件,确保视频已经加载了元数据信息: ```javascript video.addEventListener('loadedmetadata', function() { // 在这里获取第一帧图片 }); ``` 3. 创建一个 `canvas` 元素,设置其宽高视频宽高,并将视频第一帧绘制到 `canvas` 中: ```javascript let canvas = document.createElement('canvas'); canvas.width = video.videoWidth; canvas.height = video.videoHeight; let ctx = canvas.getContext('2d'); ctx.drawImage(video, 0, 0, canvas.width, canvas.height); ``` 4. 将 `canvas` 转换为图片,可以使用 `toDataURL` 方法: ```javascript let img = new Image(); img.src = canvas.toDataURL(); ``` 完整的代码如下: ```javascript let video = document.createElement('video'); video.src = 'path/to/video.mp4'; video.addEventListener('loadedmetadata', function() { let canvas = document.createElement('canvas'); canvas.width = video.videoWidth; canvas.height = video.videoHeight; let ctx = canvas.getContext('2d'); ctx.drawImage(video, 0, 0, canvas.width, canvas.height); let img = new Image(); img.src = canvas.toDataURL(); document.body.appendChild(img); }); ``` 这样,就可以将视频第一帧图片显示在页面上了。注意,如果视频较大,可能需要等待一段时间才能获取第一帧图片。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值