如何将二进制数据(例如mp3/mp4
数据)发送回前端?
我知道有两种方法:利用 NACL 提供的沙箱文件系统并在前端获取 url;通过PostMessage()
using传递数据VarArrayBuffer
。如果有人能给我一个简单的例子来说明如何通过PostMessage()
. NACl FileSystem API 有一个 Pong 示例,但我对如何将文件位置检索为 url 以便前端 JS 可以通过消息获取它有点困惑。
这是我到目前为止所做的,使用通过PostMessage()
and传递数据的第二种方法VarArrayBuffer
:
我成功地从在线 mp4 文件中检索数据并将其存储在 char vector
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
还是别的什么?