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

问题描述 投票:0回答:2

我想了解视频编解码器,主要是用于编码 HTML5 视频的音频编解码器,因为例如,Firefox 支持 MP4 视频,但在其 Windows 版本中,如果音频使用“sowt”编码,则声音将不会工作。在这种情况下我可以提供 WEBM 源,但我必须先知道 MP4 源是否有问题。

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

你觉得怎么样?这可能吗?

提前谢谢您。

javascript html video codec
2个回答
5
投票

详细的低级编解码器信息不通过媒体元素提供。您可以使用

canPlayType()
方法 并以 mime-type/codec 作为参数来测试浏览器是否可以播放某个文件,但这是一个一般查询,不会提供有关特定文件的详细信息,只是(潜在的) )浏览器的功能。

您引用的

audioTracks
属性(Safari 也支持)列出了浏览器已经已解码的文件中的可用音轨,即。能够阅读和处理。轨道数据是更“语义”的描述类型(轨道类型(主、翻译、..)、语言等),而不是关于用于原始数据的编码的任何内容。

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

一般来说,当浏览器跳过第一个选择并使用第二个、第三个等选择时,这意味着浏览器无法播放该特定文件,这意味着该文件确实有问题,但对于此浏览器而言。

最好的方法是选择一种或多种组合适用于大多数浏览器的编解码器,并始终确保视频直接渲染为其中一种格式,或至少转换为此类格式。


0
投票

mp4box.js 是 GPAC 的 MP4Box 工具的 JavaScript 版本,
它可用于获取视频信息,包括编解码器/持续时间/时间刻度等。
这是它的 github 存储库:
https://github.com/gpac/mp4box.js

© www.soinside.com 2019 - 2024. All rights reserved.