在JavaScript中检测video的编解码器

我正在研究基于Electron的桌面应用程序(即Node.js和Chrome浏览器shell挤在一起),其中一个function将包括从本地文件系统加载任意video文件。

我面临的挑战是我不会知道任意video文件使用的编解码器。 我可以过滤文件扩展名(即.mp4.webm等)…但MP4文件可以使用众多的编解码器,这是不明显的文件扩展名。 我真的不知道video文件是不支持的,直到HTML5video播放器空白(我甚至不知道如何以编程方式检测此时发生)。

我已经使用loadedmetadata事件处理程序来检测video的尺寸,但似乎并没有公开有关底层编解码器的信息。

有没有办法解决? 我正在寻找可以在本机“主”进程中识别编解码器的Node.js包,而不是让Chrome“渲染器”进程尝试在浏览器级别检测它。 不过,我所看到的所有Node.jsvideo包都依赖于ffmpeg可执行文件,我无法轻松地将其与我的Electron应用捆绑在一起。

有一百多个代码样本用于检测您的浏览器支持哪些编解码 。 但是,这是来自假设,你正在处理一个已知的video文件和一个未知的浏览器。 那么相反呢…当你有一个有保证的浏览器,但一个未知的video文件?

您可以使用mux.js检查文件中的MP4primefaces。 您需要将文件加载到UInt8Array中,然后调用muxjs.mp4.tools.inspect(bytes)来获取已分析primefaces的列表。