Я чрезвычайно новичок в мире потоковой передачи Node, поэтому прошу прощения за недостаток информации.Web Audio API onended event не срабатывает
У меня есть простой сервер узла, который получает поток файлов (используя BinaryJS), а затем повторно передает его обратно клиенту как ArrayBuffer. По сути, предположим, что я получаю ArrayBuffer с сервера, и я хочу воспроизвести его. Я в настоящее время расшифровываю его, когда он приходит, создавая новый источник и планируя воспроизведение каждый раз. Кажется, все работает.
Однако я хочу запускать другую функцию каждый раз, когда заканчивается кусок. Событие «onended», похоже, не срабатывает. Может кто-нибудь помочь? Благодарю.
client.on('open', function() {
var stream = client.send(file)
client.on('stream', function(stream) {
var nextTime = 0.01
stream.on('data', function(data) {
console.log('Receiving data from server')
context.decodeAudioData(data, function(audioBuffer) {
var source = context.createBufferSource()
source.buffer = song[song.length-1]
source.connect(context.destination);
source.onended = function() {
console.log('Buffer depleted')
}
source.start(nextTime)
nextTime += audioBuffer.duration - 0.01
})
})
stream.on('end', function() {
console.log('End of stream, ' + current)
});
})
})
Какой браузер вы используете? Вы пробовали поставить .start раньше. – Gary
@Gary Я нахожусь в Chrome 49, я попробовал это, но это не сработало. Я выяснил решение, хотя, я отправлю его в качестве ответа, может быть, вы могли бы сказать мне, если это правильно? – madebysid