我正在开发一个使用浏览器指纹识别的项目,这是我之前发现过的一种技术,它可以找到浏览器或用户可以播放的所有音频类型,我将如何使用javascript做到这一点?

我知道您可以使用HTMLMediaElement.canPlaytype(),但这仅适用于特定情况,我想知道每个可播放的类型。在AmiUnique或Browserleaks上测试我的指纹时,您会看到一些音频类型,例如:

audio/mp4; codecs="mp4a.40.2"

我在Google上找不到任何列出所有音频类型的东西,否则我将对每个选项使用canPlayType。有人知道其他方法吗?

最佳答案

不,没有方法可以枚举系统支持的功能。实际上,这并不是全部可能,也不是有用的,因为存在大量的容器和编解码器排列。此外,由于媒体经常出现比特流问题或硬件存在兼容性问题,因此甚至不可能最终确定是否要成功播放某些内容。 (尝试在某些iPhone上播放HE-AACv2。。。该软件可以正常工作,但对于听众来说却听起来很碎!)

最好的办法是列出要测试的项目列表。没有所有可能排列的明确列表,因此您必须选择一些。

Chrome 的单元测试可能是一个很好的起点:

  • MediaSource.isTypeSupported
  • audio.canPlayType FLAC
  • audio.canPlayType MPEG Audio
  • video.canPlayType MPEG-4 Video
  • video.canPlayType Ogg
  • audio.canPlayType WAV Audio
  • video.canPlayType WebM
  • 10-06 04:33