如何使用 javascript 获取视频比特率

Kin*_*son 4 javascript

我想获取上传者视频的比特率,因为后端需要它。

var video = document.createElement('video');
video.preload = 'metadata';
video.src = URL.createObjectURL(document.getElementById('fileUp').files[0]);
window.URL.revokeObjectURL(video.src);
console.log(video.bitrate);
Run Code Online (Sandbox Code Playgroud)

Red*_*ial 5

您可以获取视频持续时间,然后简单地将文件大小除以它即可得到近似值(字幕、音频和元数据也将包含在该值中),据我所知,没有标准 API 可以直接获取比特率。

示例(来源/sf/answers/4752943191/):

<div>
    <script>
        const getVideoInfos = (file) =>
            new Promise((resolve, reject) => {
                const reader = new FileReader();
                reader.onload = () => {
                    const media = new Audio(reader.result);
                    media.onloadedmetadata = () => resolve({
                        duration: media.duration,
                        file_size: file.size,
                        bitrate: 8*file.size / media.duration,
                    });
                };
                reader.readAsDataURL(file);
                reader.onerror = (error) => reject(error);
            });

        const handleChange = async (e) => {
            const infos = await getVideoInfos(e.target.files[0]);
            document.querySelector("#infos").innerText = `Infos : ${JSON.stringify(infos, null, 4)}`;
        };


    </script>
    <input type="file" onchange="handleChange(event)" />
    <p id="infos">infos: </p>
</div>
Run Code Online (Sandbox Code Playgroud)

  • 比特率计算似乎错误。您需要乘以 8 才能得到位。 (2认同)