如何从 JavaScript 获取 HTML5 视频的编解码器信息?

How obtain codec info of an HTML5 video from JavaScript?

我想知道视频编解码器,主要是用于编码 HTML5 视频的音频编解码器,因为例如,Firefox 支持 MP4 视频,但在其 Windows 版本中,如果音频编码为 "sowt" 声音将无法播放。这种情况我可以提供一个WEBM源,但是我得先知道是不是MP4源有问题

我找到了 this 但它是一个 IE11 属性 尚未在其他浏览器中实现。

你怎么看?这可能吗?

提前致谢。

媒体元素未提供详细的低级编解码器信息。您可以测试浏览器是否可以使用 canPlayType() method 和 mime-type/codec 作为参数来播放某个文件,但这是一个通用查询,不会提供有关特定文件的细节,只是(潜在的)浏览器的能力。

您引用的audioTracks 属性(也是supported in Safari)列出了浏览器已经的文件中的可用音轨已解码,即。能够阅读和处理。轨道数据更多的是 "semantic" 描述类型(轨道类型(主要、翻译、..)、语言等),与原始数据使用的编码无关。

检测此低级信息的唯一方法是使用 XMLHttpRequest(带有 CORS 要求)或 FileReader 作为字节缓冲区 (ArrayBuffer) 加载视频文件(或部分视频文件)并手动解析它.可行,但它提供了许多陷阱。

一般情况下,当浏览器跳过第一选择而使用第二、第三等选择时,这意味着浏览器无法播放该特定文件,这意味着该文件确实存在问题,但对于此浏览器。

最好的方法是 select 以一种或多种组合方式使用大多数浏览器的编解码器,并始终确保视频直接呈现为其中一种格式,或者至少转换为此类格式格式。