【问题标题】:AudioBuffer/AudioBufferSourceNode playback rate? (Web Audio)AudioBuffer/AudioBufferSourceNode 播放速率? (网络音频)
【发布时间】:2015-08-30 16:00:13
【问题描述】:

我知道可以更改音频标签(或音频 js 对象)的播放速率,但我想知道是否可以更改播放速率然后获取 AudioBuffer,或者手动更改数组本身? (我知道音频对象有一些魔力,所以它不会改变音高或声音失真 - 怎么样?!)

【问题讨论】:

    标签: javascript audio web-audio-api


    【解决方案1】:

    如果“获取 AudioBuffer”是指您想要以不同的播放速率播放 AudioBuffer 的结果,那么可以,但不能直接。

    一种方式:创建一个OfflineAudioContext,创建相应的AudioBufferSource和AudioBuffer。将源连接到离线上下文并以所需的播放速率播放源。离线上下文将以所需的速率播放原始源的音频缓冲区。

    请注意,AudioBufferSource 的 PlaybackRate 属性不保留音高。如果你想保留音高,你必须做其他事情。

    【讨论】:

    • 我必须加快缓冲区的某些部分 - 所以我必须手动处理信号,对吗?你能指出我正确的方向吗?
    • 如果您知道缓冲区的哪些部分,只需使用这些部分创建一个新缓冲区,将它们附加到新的 AudioBufferSource 和离线上下文并仅处理该部分。如果您希望能够将结果无缝连接在一起,这可能会非常有效。
    • 我实际上需要以一定速度增加播放速率,所以这可能无法满足我的需要 - 我需要增加每 1/8 秒的速率
    • playbackRate 属性是一个 AudioParam。您可以执行 linearRampToValueAtTime 以自动线性增加速率。如果这样做是您想要的,那么您仍然可以使用离线上下文(或脚本处理器)来获取结果缓冲区。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多