【问题标题】:Web Audio API: no sound in ChromeWeb Audio API:Chrome 中没有声音
【发布时间】:2016-07-05 03:25:43
【问题描述】:

我使用的是 Chrome 22.0.1229.94,但无法弄清楚为什么我在使用 Web Audio API 的任何页面上都没有音频。我已签入标志,但似乎没有启用 API 的标志,我需要做其他事情才能让它工作吗?

我尝试运行一个简单的脚本来获得一些音频但没有声音。

<script type="text/javascript">
  var context = new webkitAudioContext(),
  oscillator = context.createOscillator();

  oscillator.type = 2;
  oscillator.frequency.value = 500;
  oscillator.connect(context.destination);
  oscillator.noteOn(0);
</script>

【问题讨论】:

  • 我已将范围缩小到在训练营 MAC 上的 windows 中运行的 chrome
  • 您可以考虑使用这样的网络音频库:plugins.jquery.com/jWebAudio

标签: api audio web


【解决方案1】:

根据latest spec,noteOn() 已改为 start()。

【讨论】:

  • 这应该得到强调,有很多教程仍然提到了被贬低的功能。
【解决方案2】:

为了使用当前版本的API,你需要使用start()而不是noteOn(),stop()而不是noteOff(),并且指定振荡器类型为字符串。

<script type="text/javascript">

var context = new webkitAudioContext();
var oscillator = context.createOscillator();

oscillator.type = "square";
oscillator.frequency.value = 500;
oscillator.connect(context.destination);

var now = context.currentTime;
oscillator.start(now);
oscillator.stop(now + 1);

</script>

规范位于:http://webaudio.github.io/web-audio-api/

【讨论】:

    【解决方案3】:

    您忘记添加 noteOn(0);

    <script type="text/javascript">
    var context = new webkitAudioContext(),
    oscillator = context.createOscillator();
    
    oscillator.type = 2;
    oscillator.frequency.value = 500;
    oscillator.connect(context.destination);
    oscillator.noteOn(0);
    
    </script>
    

    【讨论】:

    • 我使用的是与您相同的版本。您还有其他信息吗?不要误会,但是,您的电脑音量调高了吗?
    • 我已将范围缩小到在训练营 MAC 上的 windows 中运行的 chrome
    【解决方案4】:

    这可能是您的 Chrome 的问题,但我还是发现脚本存在问题。在使用 Web Audio API 之前,您应该告诉它等待窗口完全加载。这是执行此操作的脚本版本:

    var init = function () {
        var context, oscillator;
        try {
            context = new webkitAudioContext();
        } catch (e) {
            alert("Your browser does not support Web Audio API!");
            return;
        }
        oscillator = context.createOscillator();
    
        oscillator.type = 2;
        oscillator.frequency.value = 500;
        oscillator.connect(context.destination);
        oscillator.noteOn(0);
        oscillator.noteOff(1);
    }
    window.addEventListener("load", init);
    

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2013-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多