【问题标题】:Send buffer for audiocontext via socket.io (node.js)通过 socket.io (node.js) 发送音频上下文的缓冲区
【发布时间】:2017-10-22 14:05:29
【问题描述】:

我正在尝试通过 socket.io 发送音频文件(或块)。

我试过了:

// server
    socket.on('client-get-audio', function (data) {
      //data.fname - name of requested file
      var buffer = fs.readFileSync(data.fname, null);
      // try 2 - read arraybuffer
      //var buffer = fs.readFileSync(data.fname, null).buffer;
      buffer = new Uint8Array(buffer);
      socket.emit('audio-data', {count: 1, buff: buffer});
    });

我无法解码数据:

// client
// ctx - AudioContext
// source - buffer source
socket.on('audio-data', function(data){
  ctx.decodeAudioData(data.buff, decoded => {
  source.buffer = decoded;
  source.start(0);
});

我不会描述我所有的尝试,有很多。

更新

工作变体

// server
socket.on('client-get-audio', function (data) {
    //data.fname - name of requested file
    var buffer = fs.readFileSync(data.fname, null);
    socket.emit('audio-data', {count: 1, buff: buffer});
});


// client

  function toArrayBuffer(buf) {
      var ab = new ArrayBuffer(buf.length);
      var view = new Uint8Array(ab);
      for (var i = 0; i < buf.length; ++i) {
          view[i] = buf[i];
      }
      return ab;
  }

// ctx - AudioContext
// source - buffer source
socket.on('audio-data', function(data){
  ctx.decodeAudioData(toArrayBuffer(data.buff.data), decoded => {
  source.buffer = decoded;
  source.start(0);
});

也许有人可以提出更正确的变体?

【问题讨论】:

  • 是否有错误,声音没有播放,或者事件没有在客户端触发?
  • 错误:无法解码音频数据
  • 我不确定我是否在服务器上正确读取了文件。我收到了数组缓冲区,但音频上下文返回错误。

标签: javascript node.js socket.io audiocontext


【解决方案1】:

尝试使用套接字构建 API。 更方便。

我认为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多