Как воспроизвести буфер с Audio Context?

В общем хочу сделать:
1) передачу трансляцию звука из одной вкладки браузера на сервер.
2) с сервера транслировать звук который ему приходить n-ному количеству клиентов.
3) воспроизведение звука у клиентов.

первое сделал:
var session = {
  audio: true,
  video: false
};
var recordRTC = null;
navigator.getUserMedia(session, initializeRecorder, function(){
	console.log("ERROR")
});
function initializeRecorder(stream) {
  var audioContext = window.AudioContext;
  var context = new AudioContext();
  var audioInput = context.createMediaStreamSource(stream);
  var bufferSize = 2048;
  // create a javascript node
  var recorder = context.createScriptProcessor(bufferSize, 1, 1);
  // specify the processing function
  recorder.onaudioprocess = recorderProcess;
  // connect stream to our recorder
  audioInput.connect(recorder);
  // connect our recorder to the previous destination
  recorder.connect(context.destination);
}
function convertFloat32ToInt16(buffer) {
  l = buffer.length;
  buf = new Int16Array(l);
  while (l--) {
    buf[l] = Math.min(1, buffer[l])*0x7FFF;
  }
  return buf.buffer;
}
function recorderProcess(e) {
  var left = e.inputBuffer.getChannelData(0);
  window.Stream.write(convertFloat32ToInt16(left));
}

var client = new BinaryClient('ws://localhost:9001');
client.on('open', function() {
  // for the sake of this example let's put the stream in the window
  window.Stream = client.createStream();
});

Второе вот так:
(Сервер)
var binaryServer = require('binaryjs').BinaryServer;
var server = binaryServer({ server, port: 9001});

server.on('connection', function(client) {
	console.log("admin open")
	client.on('stream', function(stream, meta) {
		console.log("stream");
			for(let i in streams){
				stream.pipe(streams[i]);
			}
		// stream.on("data", function(data){
		// 	console.log("on data")
		// })
	});

	client.on('close', function() {
		console.log("admin close")
	});
});




var binaryServer = require('binaryjs').BinaryServer;
var server = binaryServer({ server, port: 9002});
streams = [];
server.on('connection', function(client) {
	console.log("clietn open")
	let stream = client.createStream();
	streams.push(stream);
});


То есть у меня как то берется audio с микрофона в виде буфера и отправляется на сервер. С сервера я так же отправляю клиентам этот буфер.
Но как воспроизвести буфер на клиенте через Audio Context понятия не имею.

Буду благодарен за любую инф
  • Вопрос задан
  • 77 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы