【问题标题】:How can I get video bitrate with javascript如何使用 javascript 获取视频比特率
【发布时间】:2021-10-21 16:39:18
【问题描述】:

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

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);

【问题讨论】:

  • @bZezzz 不,这个问题没有提到 dash.js。
  • 我猜这段代码不起作用?另外,您不想在获得video.bitrate 之后 致电revokeObjectURL() 吗?
  • @flakerimi 不,这个问题没有提到 dash.js。
  • 也许让后端更好地完成这项工作

标签: javascript


【解决方案1】:

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

示例(学分https://stackoverflow.com/a/67899188/6072029):

<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: 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多