You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Superpowered的loop或loopBetween方法未按预期运行问题咨询

问题根因

你调用loopBetween()没有生效是两个配置错误导致的:

  1. Superpowered AdvancedAudioPlayer的loop属性默认值为false,仅设置循环区间不会自动开启循环功能,需要显式赋值开启。
  2. loopBetween()的最后一个参数synchronisedStart仅在需要和其他音频轨道做同步启动的时候才需要设为false,普通单轨道循环场景设为false会导致首次跳转起始位置异常,出现无声音的情况。

修改后可正常运行的代码

class MyProcessor extends SuperpoweredWebAudio.AudioWorkletProcessor {
    // 构造函数执行完成后触发
    onReady() {
        this.player = new this.Superpowered.AdvancedAudioPlayer(this.samplerate, 2, 2, 0, 0.501, 2, false);
        SuperpoweredTrackLoader.downloadAndDecode('../123456.mp3', this);
    }

    onMessageFromMainScope(message) {
        if (message.SuperpoweredLoaded) {
            this.player.openMemory(this.Superpowered.arrayBufferToWASM(message.SuperpoweredLoaded.buffer), false, false);
            // 新增:显式开启循环开关
            this.player.loop = true;
            this.player.loopBetween (   
                1000.0, // 循环起始位置,单位毫秒
                3000.0, // 循环结束位置,单位毫秒
                true,
                255,
                // 普通单轨循环场景修改为true即可
                true
            );
            this.player.play();
            this.sendMessageToMainScope({ loaded: true });
        }

        if (typeof message.rate !== 'undefined') this.player.playbackRate = message.rate / 10000.0;
        if (typeof message.pitchShift !== 'undefined') this.player.pitchShiftCents = parseInt(message.pitchShift) * 100;
    }

    processAudio(inputBuffer, outputBuffer, buffersize, parameters) {
        if (!this.player.processStereo(outputBuffer.pointer, false, buffersize, 1)) {
            for (let n = 0; n < buffersize * 2; n++) outputBuffer.array[n] = 0;
        }
        // 原有轮询强制跳转的hack逻辑直接删除即可
    }
}

内容的提问来源于stack exchange,提问作者sean1081

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 19:06:07