Javascript Google原生客户端,将二进制数据从NACL发送到前端
如何将二进制数据(例如Javascript Google原生客户端,将二进制数据从NACL发送到前端,javascript,c++,arrays,google-nativeclient,Javascript,C++,Arrays,Google Nativeclient,如何将二进制数据(例如mp3/mp4数据)发送回前端 我知道有两种方法:利用NACL提供的沙盒文件系统,在前端获取url;使用VarArrayBuffer通过PostMessage()传递数据。如果有人能给我一个简单的例子,说明如何通过PostMessage()传递二进制数据,那就太好了。NACl文件系统API有一个Pong示例,但我对如何将文件位置检索为url,以便前端JS能够通过消息获取它感到困惑 以下是我到目前为止所做的工作,使用第二种方法通过PostMessage()和VarArrayB
mp3/mp4
数据)发送回前端
我知道有两种方法:利用NACL提供的沙盒文件系统,在前端获取url;使用VarArrayBuffer
通过PostMessage()
传递数据。如果有人能给我一个简单的例子,说明如何通过PostMessage()
传递二进制数据,那就太好了。NACl文件系统API有一个Pong示例,但我对如何将文件位置检索为url,以便前端JS能够通过消息获取它感到困惑
以下是我到目前为止所做的工作,使用第二种方法通过PostMessage()
和VarArrayBuffer
传递数据:
- 我成功地从联机mp4文件中检索到数据,并将其存储在char vector
中vector 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
char*binaryBuffer=new char[outputBuffer.size()]; 整数增量=0; for(vector::iterator it=outputBuffer.begin(); it!=outputBuffer.end();it++){ binaryBuffer[增量]=*它; } pp::VarArrayBuffer突发缓冲区(二进制缓冲区); 实例->后消息(突发)//instance_uu是一个NACL模块实例
那么,JS端应该如何捕获数组缓冲区呢?是通过
message.data
还是其他什么?我不明白VarArrayBuffer的构造函数应该如何知道binaryBuffer的大小。我猜您的代码之所以能够编译,是因为pp::Var::Var(const char*utf8_str)构造函数需要一个以null结尾的UTF-8字符串,它被隐式调用()。