有没有办法从SoundJS中的声音中获取原始数据以读取自定义标头?

时间:2019-07-24 21:16:27

标签: javascript html html5-audio createjs soundjs

我使用的是CreateJS的SoundJS,我想知道,是否可以获取音频播放的原始(十六进制)数据?我正在向音频文件中添加自定义标头以进行口形同步字符,但是我不知道如何获取音频的原始十六进制数据。

我尝试查找_playbackResource,但什么也没找到。

var instance = playSound(whichTalkie);
console.log(instance._playbackResource);

我需要原始音频数据。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我假设您是说要加载原始的AudioBuffer

SoundJS 1.0中没有官方的方法可以做到这一点(我们将在2.0中进行更多介绍,您可以在in-progress branch in Git中看到)。

但是,您可以使用以下命令访问所有已加载的缓冲区:

var plugin = createjs.Sound.activePlugin; // The WebAudioPlugin
var buffer = plugin._audioSources[url];

此外,SoundJS存储的加载项中还包含更多信息,包括原始数组缓冲区。

var loader = plugin._loaders[url];
var buffer = loader.rawResult;

不幸的是,没有干净的方法可以从声音实例中获取缓冲区。

您监听“ fileload”事件,可以直接从该事件获取src:

createjs.Sound.on("fileload", handleFileLoad);
  createjs.Sound.registerSound("https://s3-us-west-2.amazonaws.com/s.cdpn.io/1524180/MK21.mp3", "music");
function handleFileLoad(event) {
    var src = event.src;
    // Use whatever approach to get the Array or Audio buffer
}

或通过play()调用获取src:

var inst = createjs.Sound.play("music");
var src = inst.src;

希望对您有帮助!