将MediaElementAudioSourceNode转换为AudioBufferSourceNode

时间:2016-04-22 18:25:54

标签: javascript html5-audio web-audio audiobuffer

如果要解码音频数据,createMediaElementSource()无法在移动设备上运行,但createBufferSource()方法工作正常:

此代码在网络浏览器中正常运行,但在移动设备中无效:

var audioSource = new Audio();
audioSource.src= "Test.mp3";
var audioCtx = new AudioContext();
var sourceT1 = audioCtx.createMediaElementSource(audioSource); //This is the source audio
//My Decoding...

此代码适用于Web和移动浏览器:

var audioSource = new Audio();
var audioCtx = new AudioContext();
var sourceT2 = audioCtx.createBufferSource(); //This is the source audio
request = new XMLHttpRequest();
request.open('GET', 'Test.mp3', true);
request.responseType = 'arraybuffer';
request.onload = function() {
 var audioData = request.response;
audioCtx.decodeAudioData(audioData, function(myBuffer) {
 sourceT2.buffer = myBuffer;
//My Decoding...
 },
function(e){"Error with decoding audio data" + e.err});
}

在我的情况下,我有一个来自要解码的视频播放器的音频源,这是一个MediaElementAudioSourceNode,我需要将其转换为AudioBufferSourceNode,以便让我的代码在移动设备上运行,换句话说,是否可以将 sourceT1 转换为 sourceT2

任何想法怎么做?

修改 基于这个answer,不幸的是我认为这是不可能的

1 个答案:

答案 0 :(得分:0)

你不能说,但如果你正在使用Chrome,那么createMediaElementSource现在应该正常工作。您必须首先转到chrome:// flags并启用统一媒体管道标志。