我正在开发基于电子的桌面应用程序(即Node.js和Chrome shell一起填充),它的一个特性将包括从本地文件系统加载任意视频文件。
我面临的一个挑战是,我不知道任意视频文件所使用的编解码器。我可以通过文件扩展名(如.mp4、.webm等)进行过滤。但是MP4文件可以使用许多编解码器,这在文件扩展名中并不明显。直到HTML5视频播放器出现空白时,我才真正知道视频文件是否不受支持(我甚至不知道如何以编程方式检测这个发生的时间)。
我已经在使用loadedmetadata事件处理程序来检测视频的维度,但它似乎没有公开有关底层编解码器的信息。
有办法绕过这件事吗?我正在寻找能够识别本机“主”进程中的编解码程序的Node.js包,而不是让Chrome“呈现器”进程尝试在浏览器级别检测它。然而,我看到的所有Node.js视频包都依赖于ffmpeg可执行程序,我很难将其与电子应用程序捆绑在一起。
有一百万个代码示例用于检测浏览器支持的哪个编解码器。但这来自于这样一个假设:你正在处理的是一个已知的视频文件和一个未知的浏览器。反过来呢..。当你有一个有保证的已知浏览器,但一个未知的视频文件?
发布于 2020-11-15 15:00:21
最简单的方法是使用mux.js,如下所示,muxjs.mp4.probe.tracks(e)。会给你返回一系列的音轨。
示例输出:
[
{
"id": 1,
"type": "video",
"codec": "avc1.64101e",
"timescale": 12288
},
{
"id": 2,
"type": "audio",
"codec": "mp4a.40.2",
"timescale": 44100
}
]发布于 2016-12-02 16:47:46
您可以使用mux.js检查文件中的MP4原子。您需要将文件加载到UInt8Array中,然后调用muxjs.mp4.tools.inspect(bytes)来获得解析原子的列表。
https://stackoverflow.com/questions/37461078
复制相似问题