如何判断webm文件是音频还是视频?

问题描述 投票:0回答:1

我正在使用 ReactJS 构建一个上传器。当用户上传视频或音频文件时,我会获取 MIME 文件并注册类型(视频或音频)以便稍后显示图标。

当他们上传扩展名为

webm
(music.webm) 的音频文件且 MIME 类型为
video/webm
时,我遇到了问题,所以我将其注册为视频,而实际上我应该将其注册为音频。

我尝试解码视频并找到一些编解码器以确保没有使用 blob.text() 的视频,但我找不到信息,或者我不知道在哪里查找。

我知道这是可能的,因为玩家知道其中的区别。

如何检测webm文件是音频还是视频?

javascript reactjs mime-types webm
1个回答
0
投票

您可以从 ebml 标头中读取它。

  1. 安装 ts-ebml (https://github.com/legokichi/ts-ebml)。
  2. 添加以下代码:
import * as ebml from 'ts-ebml';

export const getMediaStreamType = async (buf: ArrayBuffer) => {

    const decoder = new ebml.Decoder();
    const ebmlElms = decoder.decode(buf);
    const els = ebmlElms.filter(d => d.name === "TrackType");
    return {
        video: els.some((e: any) => e.value == 1),
        audio: els.some((e: any) => e.value == 2),
    };

}
© www.soinside.com 2019 - 2024. All rights reserved.