如果你想解码音频数据,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?
任何想法如何做到这一点?
编辑: 基于这个答案,不幸的是我认为这是不可能的