在JavaScript

时间:2016-05-26 12:37:22

标签: javascript node.js html5 video electron

我正在开发基于Electron的桌面应用程序(即Node.js和嵌入在一起的Chrome浏览器外壳),其中一项功能包括从本地文件系统加载任意视频文件。

我面临的挑战是我不会知道任意视频文件使用的编解码器。我可以按文件扩展名(即.mp4.webm等)进行过滤...但MP4文件可以使用多种编解码器,这些编解码器在文件扩展名中并不明显。在HTML5视频播放器空白之前,我真的不知道视频文件不受支持(我甚至不确定如何以编程方式检测 何时发生)

我已经使用loadedmetadata事件处理程序来检测视频的维度,但它似乎没有公开有关底层编解码器的信息。

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

有一百万个代码示例用于检测浏览器支持哪些编解码器。但这是假设您正在处理已知的视频文件和未知的浏览器。反过来......当你有一个有保证的已知浏览器,但是一个未知的视频文件?

1 个答案:

答案 0 :(得分:0)

最简单的方法是按照[ { "id": 1, "type": "video", "codec": "avc1.64101e", "timescale": 12288 }, { "id": 2, "type": "audio", "codec": "mp4a.40.2", "timescale": 44100 } ] 的方式使用mux.js。那会返回一系列音轨。

示例输出:

INPUT