2016-04-22 16 views
0

如果要解碼音頻數據,createMediaElementSource()不工作在移動設備上,但是createBufferSource()方法是否工作正常:轉換MediaElementAudioSourceNode到AudioBufferSourceNode

此代碼的Web瀏覽器上正常工作,但不是在移動設備:

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}); 
} 

在我的情況I H ave來自視頻播放器的音頻源將被解碼,這是一個MediaElementAudioSourceNode,我需要將其轉換爲AudioBufferSourceNode以便讓我的代碼在移動設備上工作,換句話說,是否可以將sourceT1sourceT2

任何想法如何做到這一點?

編輯:在此基礎上answer ,不幸的是,我認爲這是不可能做到這一點

+0

我認爲它的使命不可能,因爲它不被支持。 –

+0

你需要訪問哪些視頻文件?你可以使用file-api嗎?之後你想怎麼處理音頻?也許有另一種方法... –

+0

我需要獲取遠程音頻流的字節頻率,問題是,當我使用createMediaElementSource()創建媒體時,getByteFrequencyData()在移動設備中不起作用。現在我試圖找到另一種方式,你知道任何解決方案可視化流音頻(.m3u8)的頻率? –

回答

0

你不說,但如果您使用Chrome,createMediaElementSource應該現在的工作。儘管如此,你必須先去chrome://標誌並啓用統一媒體管道標誌。

+0

你的意思是移動設備中的鉻? –