伙计们。救命,我已经绝望了T_T。我现在给你代码:
window.AudioContext = window.AudioContext || window.webkitAudioContext;
var context = new AudioContext();
function loadSound() {
var request = new XMLHttpRequest();
request.open("GET", "http://localhost:3000/", true);
request.responseType = "arraybuffer";
request.onload = function() {
var Data = request.response;
console.log(Data);
process(Data);
};
request.send();
}
function process(Data) {
var source = context.createBufferSource(); // Create Sound Source
context.decodeAudioData(Data, function(buffer) {
console.log(buffer);
source.buffer = buffer;
source.connect(context.destination);
source.start(context.currentTime);
})
}
loadSound();
它工作,服务器返回并播放音乐,这是实际的服务器代码:
router.get('/', function(req, res, next) {
var file = __dirname + '/upload/star.mp3';
res.set({ 'Content-Type': 'audio/mpeg' });
var readStream = fs.createReadStream(file);
readStream.pipe(res);
});
但这家伙只关心鼓,就像曲目来了,但不演奏:
export class AppComponent implements OnInit {
title = 'app works!';
constructor(public http: Http) {}
process(data) {
let context = new AudioContext();
let source = context.createBufferSource(); // Create Sound Source
context.decodeAudioData(data).then(buffer => {
console.log(buffer);
source.buffer = buffer;
source.connect(context.destination);
source.start(context.currentTime);
})
}
play() {
this.http.get("http://localhost:3000/")
.map((res: Response) => res.arrayBuffer())
.subscribe(res => {
console.log(res);
this.process(res);
},
err => console.error(err),
() => console.log('done')
)
}
}
实际上,也许有人已经遇到过他们在这种情况下所做的事情?
如果它对任何人有用,我错过了请求中的标头
}