我正在开发基于Electron的桌面应用程序(即Node.js和嵌入在一起的Chrome浏览器外壳),其中一项功能包括从本地文件系统加载任意视频文件。
我面临的挑战是我不会知道任意视频文件使用的编解码器。我可以按文件扩展名(即.mp4
,.webm
等)进行过滤...但MP4文件可以使用多种编解码器,这些编解码器在文件扩展名中并不明显。在HTML5视频播放器空白之前,我真的不知道视频文件不受支持(我甚至不确定如何以编程方式检测 何时发生)
我已经使用loadedmetadata
事件处理程序来检测视频的维度,但它似乎没有公开有关底层编解码器的信息。
这有什么办法吗?我正在寻找可以识别原生“主”过程中的编解码器的Node.js包,而不是让Chrome“渲染器”进程尝试在浏览器级别检测它。但是,我看到的所有Node.js视频包都依赖于ffmpeg
可执行文件,我无法轻松地将其与我的Electron应用程序捆绑在一起。
有一百万个代码示例用于检测浏览器支持哪些编解码器。但这是假设您正在处理已知的视频文件和未知的浏览器。反过来......当你有一个有保证的已知浏览器,但是一个未知的视频文件?
答案 0 :(得分:0)
最简单的方法是按照[
{
"id": 1,
"type": "video",
"codec": "avc1.64101e",
"timescale": 12288
},
{
"id": 2,
"type": "audio",
"codec": "mp4a.40.2",
"timescale": 44100
}
]
的方式使用mux.js。那会返回一系列音轨。
示例输出:
INPUT