【问题标题】:Buffering Bytes - Node.js Addon缓冲字节 - Node.js 插件
【发布时间】:2015-07-14 15:39:18
【问题描述】:

我想接收来自 Node.js 的 wav 流(在附加组件中)。它是这样实现的:

readableStream.on('data', function(chunk) {
    var obj1 = addon.buffering(chunk);//my addon
});

但现在我想缓冲这些信息,并创建原始 wav 的副本。到目前为止,我无法用字节填充新文件。

void buffering(const FunctionCallbackInfo<v8::Value>& args) {
  Isolate* isolate = Isolate::GetCurrent();
  HandleScope scope(isolate);

  Local<Object> bufferObj = args[0]->ToObject();
  char *buf = node::Buffer::Data(bufferObj);
  if (i == 0){ fp = fopen("copy.wav", "wb"); i++;}

  fwrite(buf, 1, sizeof(buf), fp);
  fflush(fp);
  if (i == 3){ fclose(fp); }
  i++;

  Local<String> devolve = String::NewFromUtf8(isolate, "buffering_success");//C++--->JS
  args.GetReturnValue().Set(devolve);
}

我不明白为什么,但sizeof(buf) 总是太小。我想是因为这个。

【问题讨论】:

  • sizeof(buf) == sizeof(char*) 是一个编译时常量。你需要找到一个 API 来告诉你那个东西的大小。
  • 这与 C 有什么关系?没有给出 C 代码。
  • Fwrite.. 用 C 写文件
  • 这不是有效的 C 代码。 if 是 Python、C、BASIC、Pascal 等中的有效关键字。您还想添加这些标签吗?
  • 是否实现了 v8.h 和 node.h 的 C 代码

标签: c++ node.js v8 node.js-addon


【解决方案1】:

@Mat 的宝贵提示:

Nodejs:

readableStream.on('data', function(chunk) {
  console.log(chunk);
  var size = chunk.length;//<---Size of chunk, thanks Matt
  console.log(size);
  var obj1 = addon.buffering(chunk,size);
  console.log('pass chunk');
});

插件:

void buffering(const FunctionCallbackInfo<v8::Value>& args) {
  Isolate* isolate = Isolate::GetCurrent();
  HandleScope scope(isolate);
  int size = args[1]->NumberValue();

  Local<Object> bufferObj = args[0]->ToObject();
  char *buf = node::Buffer::Data(bufferObj);
  if (i == 0){ fp = fopen("copy.wav", "wb"); i++;}

  fwrite(buf, 1, size, fp);
  fflush(fp);
  if (i == 3){ fclose(fp); }
  i++;
  Local<String> devolve = String::NewFromUtf8(isolate,"buffering_sucess");//C++--->JS
  args.GetReturnValue().Set(devolve);
}

我会将迭代器移除为一些“通用”解决方案。之所以在这里,是因为我现在知道将发生的迭代次数。

【讨论】:

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