Google Native Client,将二进制数据从 NACL 发送到前端

Google Native Client, sending binary data from NACL to the frontend

提问人:JJin 提问时间:9/6/2012 最后编辑:TowkirJJin 更新时间:5/22/2019 访问量:1467

问:

如何发送二进制数据,例如 数据返回前端?mp3/mp4

我知道有两种方法可以做到这一点:利用 NACL 提供的沙盒文件系统并在前端获取 url;通过使用 .如果有人能给我一个简单的例子来说明如何传递二进制数据,那就太好了。NACl FileSystem API 有一个 Pong 示例,但我对如何将文件位置检索为 url 以便前端 JS 可以通过消息获取它有点困惑。PostMessage()VarArrayBufferPostMessage()

这是我到目前为止所做的,使用第二种传递数据的方法:PostMessage()VarArrayBuffer

  • 我成功地从在线 mp4 文件中检索了数据并将其存储在 char vector 中。vector<char> outputBuffer

  • 将数据转储到一个新的 char 缓冲区中,并创建以保存数据并将其传递给 JS 端VarArrayBuffer

    char* binaryBuffer = new char[outputBuffer.size()];
    int increment = 0;
    for (vector<char>::iterator it = outputBuffer.begin(); 
         it != outputBuffer.end(); it++) {
         binaryBuffer[increment] = *it;
    }
    
    pp::VarArrayBuffer outBuffer(binaryBuffer);
    instance_->PostMessage(outBuffer);//instance_ is a NACL module instance
    

那么,JS端应该如何捕获数组缓冲区呢?是通过还是别的什么?message.data

JavaScript C++ 数组 google-nativeclient

评论

0赞 h0b0 2/7/2013
我不明白 VarArrayBuffer 的构造函数应该如何知道 binaryBuffer 的大小。我猜您的代码之所以编译,是因为隐式调用了需要以 null 结尾的 UTF-8 字符串的 pp::Var::Var(const char* utf8_str) 构造函数 (developers.google.com/native-client/dev/peppercpp/...)。

答: 暂无答案