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

时间:2012-09-06 03:05:37

标签: javascript c++ arrays google-nativeclient

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

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

以下是我到目前为止所做的工作,使用第二种方法通过PostMessage()VarArrayBuffer传递数据:

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

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

    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还是别的?

0 个答案:

没有答案