HTMLMediaElement 的非线性体积

Posted

技术标签:

【中文标题】HTMLMediaElement 的非线性体积【英文标题】:Non-linear volume for HTMLMediaElement 【发布时间】:2011-07-18 22:56:54 【问题描述】:

我使用 javascripthtml5 编写了自己的媒体播放器界面。目前我的音量滑块映射到浏览器的音量属性 1:1。我很想调整这个以考虑perceived loudness。

volume attribute section of the html5 specs 说:

... 0.0 表示静音,1.0 表示最响亮的设置,两者之间的值会增加响度。范围不必是线性的。

这似乎意味着对于浏览器应该使用什么规模没有标准。我担心如果我在一个浏览器中调整感知响度,另一个浏览器可能已经这样做了,从而导致过度校正。

有谁知道浏览器当前使用的体积比例以及这些在未来是否可能发生变化?

【问题讨论】:

【参考方案1】:

假设您无法直接获取每个浏览器上的信息,我建议您开发一组经验测试。顺便说一句,我无法想象浏览器供应商会使用 logarithmiclinear 音量控制以外的任何东西,因此在您的测试中只需要考虑两个结果。创建测试流程后,您可以在新的浏览器版本发布时重复使用它。

至于测试本身,它们可能是您自己的感知(测试 100% 与 50% 的响度,并判断 50% 的声音实际上是一半,还是只有 75% 左右);或者他们可以通过在声卡上记录“你听到的”通​​道,并在自定义应用程序或工具中分析波形,这一次寻找(峰值)幅度下降 0.5 (如果简单线性)或大于 . 5 下降,如果是对数。如果构建您自己的分析工具,PCM 波形数据并不太难处理,前提是您熟悉 C/C++/C#/et.al。

【讨论】:

我不太喜欢的一件事是必须存储特定浏览器版本的行为列表。总会有一些不起眼的浏览器不在列表中。但是,你给了我一个想法。如果我在 javascript 中创建了一个手动感知测试,那么个人用户不仅可以针对他们的浏览器进行校准,还可以针对他们自己的声音感知进行校准。

以上是关于HTMLMediaElement 的非线性体积的主要内容,如果未能解决你的问题,请参考以下文章

使用 HTMLMediaElement 向后播放音频

如何在 canplay 事件中设置 HTMLMediaElement 的 .currentTime,调用 play 并避免调度 pause 事件?

故意使 HTMLMediaElement 或 HTMLVideoElement 缓冲区无效或清除?

扩展音频/HTMLMediaElement javascript 对象

无法在“SourceBuffer”上执行“appendBuffer”:HTMLMediaElement.error 属性不为空

HTML5 音频元素 - 搜索滑块 - 无法在“HTMLMediaElement”上设置“currentTime”属性:提供的双精度值是非有限的