12

如何将二进制数据(例如mp3/mp4数据)发送回前端?

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

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

  • 我成功地从在线 mp4 文件中检索数据并将其存储在 char vectorvector<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还是别的什么?

4

0 回答 0