2016-04-22 10 views
0

AudioBufferSourceNode Wenn Sie Audiodaten entschlüsseln möchten, createMediaElementSource() funktioniert nicht auf mobilen Geräten, jedoch createBufferSource() -Methode einwandfrei funktioniert:Convert MediaElementAudioSourceNode

Dieser Code funktioniert einwandfrei in Web-Browsern, aber nicht in mobile Geräte:

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

und dieser Code funktioniert sowohl für Web und mobile Browser:

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

In meinem Fall I h ave eine Audioquelle, die von einem Videoplayer kommt, der decodiert werden soll, das ist ein MediaElementAudioSourceNode, und ich muss es in einen AudioBufferSourceNode konvertieren, damit mein Code auf mobilen Geräten funktioniert. Mit anderen Worten, ist es möglich, sourceT1 zu konvertieren bis sourceT2?

Irgendeine Idee, wie man es macht?

EDIT: Basierend auf dieser answer, leider finde ich es unmöglich ist, es zu tun

+0

Ich denke auch, es ist Mission unmöglich, da es nicht unterstützt wird. –

+0

Auf welche Videodateien müssen Sie zugreifen? Können Sie Datei-API verwenden? Was willst du danach mit dem Audio machen? Vielleicht gibt es einen anderen Weg ... –

+0

Ich muss die Byte-Frequenz eines Remote-Audio-Streaming bekommen, das Problem ist, dass getByteFrequencyData() funktioniert nicht auf mobilen Geräten, wenn ich das Medium erstellen mit createMediaElementSource(). Im Moment versuche ich einen anderen Weg zu finden, weißt du irgendeine Lösung für die Visualisierung der Frequenz eines Streaming Audio (.m3u8)? –

Antwort

0

Sie sagen nicht, aber wenn Sie mit Chrome sollte createMediaElementSource jetzt arbeiten. Sie müssen zu chrome: // flags gehen und das Unified-Media-Pipeline-Flag zuerst aktivieren.

+0

Meinst du Chrome in mobilen Geräten? –