如何在Web Audio API中将SoundManager2定义为媒体元素源

时间:2013-12-31 07:35:03

标签: html5 audio html5-audio web-audio soundmanager2

我知道网络音频API可以使用<audio>元素作为媒体源(对于频率数据等),但是SoundManager2似乎没有创建<audio>标记,因此我我不确定我将提供什么作为源,以便使用SoundManager2播放声音,并将其用作使用网络音频提供可视化的源。

分割的原因是因为SoundManager2有很好的文档记录,可以传递诸如加载的字节,在音频中特定时间安排事件等信息,以及其他尚未存在或者很难找到的事情。在网络音频api。但是我想避免在SoundManager中对flash进行可视化的要求,并在这方面使用Web Audop API。

任何帮助都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

我不知道这在soundmanager2中是如何工作的,但在普通的javascript中它很简单。您只需创建MediaElementNode并为其添加audiovideo标记即可。所以我的猜测是你必须将html对象指定为soundmanager2。 (您可以通过在javascript中创建音频元素来实现此目的:player = new Audio();或将<audio id="player"></audio>标记添加到您的html并通过document.getElementById('player');

获取

基本示例:

function init() {
    player = new Audio();
    window.context = new webkitAudioContext()||AudioContext();
    audioSource = context.createMediaElementSource(player);
    audioSource.connect(context.destination);
}

Source jsfiddle with example

我希望这会给你一个正确的方向,找到如何在soundmanager2中做到这一点。

答案 1 :(得分:1)

<audio>元素确实隐藏在SoundManager2中,但您可以这样找到它:

soundManager.onready = function() {
    audioElement = soundManager.sounds[soundManager.soundIDs[0]]._a;
    webAudioSource = audioContext.createMediaElementSource(audioElement);
}

与@ MarijnS95的示例一样,您需要将媒体元素源节点连接到音频上下文目标节点才能听到它。这是因为Web Audio劫持了元素的音频输出。但是SoundManager仍然可以控制播放/暂停/定时功能,现在您可以使用网络音频进行可视化/处理声音。