相关疑难解决方法(0)

为什么Safari或Firefox无法处理MediaElementSource的音频数据?

Safari或Firefox都无法MediaElementSource使用Web Audio API 处理音频数据.

var audioContext, audioProcess, audioSource,
    result = document.createElement('h3'),
    output = document.createElement('span'),
    mp3 = '//www.jonathancoulton.com/wp-content/uploads/encodes/Smoking_Monkey/mp3/09_First_of_May_mp3_3a69021.mp3',
    ogg = '//upload.wikimedia.org/wikipedia/en/4/45/ACDC_-_Back_In_Black-sample.ogg',
    gotData = false, data, audio = new Audio();
 
function connect() {
  audioContext = window.AudioContext ? new AudioContext() : new webkitAudioContext(),
  audioSource  = audioContext.createMediaElementSource( audio ),
  audioScript  = audioContext.createScriptProcessor( 2048 );
 
  audioSource.connect( audioScript );
  audioSource.connect( audioContext.destination );
  audioScript.connect( audioContext.destination );
  audioScript.addEventListener('audioprocess', function(e){
    if ((data = e.inputBuffer.getChannelData(0)[0]*3)) {
      output.innerHTML = Math.abs(data).toFixed(3);
      if (!gotData) gotData = true;
    }
  }, false);
} …
Run Code Online (Sandbox Code Playgroud)

javascript safari firefox html5 web-audio-api

10
推荐指数
1
解决办法
3459
查看次数

将 MediaElementAudioSourceNode 连接到 AudioContext.destination 不起作用

这是一个显示问题的小提琴。基本上,每当调用对象createMediaElementSource的方法时,音频元素的输出都会重新路由到返回的. 这一切都很好并且符合规范;但是,当我尝试将输出重新连接到扬声器(使用)时,没有任何反应。AudioContextMediaElementAudioSourceNodedestinationAudioContext

我在这里遗漏了一些明显的东西吗?也许这与跨域音频文件有关?我只是在 Google 上找不到有关该主题的任何信息,并且在规范中没有看到它的注释。

小提琴的代码是:

var a = new Audio();
a.src = "http://webaudioapi.com/samples/audio-tag/chrono.mp3";
a.controls = true;
a.loop = true;
a.autoplay = true;
document.body.appendChild(a);

var ctx = new AudioContext();


// PROBLEM HERE
var shouldBreak = true;
var src;
if (shouldBreak) {
    // this one stops playback
    // it should redirect output from audio element to the MediaElementAudioSourceNode
    // but src.connect(ctx.destination) does not fix it
    src = ctx.createMediaElementSource(a);
    src.connect(ctx.destination);
}
Run Code Online (Sandbox Code Playgroud)

javascript html5-audio audiocontext web-audio-api

2
推荐指数
1
解决办法
757
查看次数