2021.2.25日报

1,基本上找到播放cctv直播的解决方案了。这网站用了wasm,但代码是加密的。我找了个emscripten的代码:

G:\emsdk\upstream\install\emscripten\node_modules\wasm2c\wasm2c.js

G:\emsdk\upstream\install\emscripten\src\preamble.js

终于找到那句failed to load wasm binary file at xx的来源了。原来是mb的fetch在面对data url的时候,实现有点问题。可能是版本太老导致。

mb的fetch还没等data url的response stream返回,有可能因为gc,导致一些类被回收了:

这里会意外析构SharedMemoryDataConsumerHandle::ReaderImpl
>    node.dll!net::SharedMemoryDataConsumerHandle::ReaderImpl::~ReaderImpl() 行 456    C++    已加载符号。
     node.dll!net::SharedMemoryDataConsumerHandle::ReaderImpl::`scalar deleting destructor'(unsigned int)    C++    非用户代码。已加载符号。
     [内联框架] node.dll!WTF::OwnedPtrDeleter<blink::WebDataConsumerHandle::Reader>::deletePtr(blink::WebDataConsumerHandle::Reader * ptr) 行 52    C++    非用户代码。已加载符号。
     [内联框架] node.dll!WTF::OwnPtr<blink::WebDataConsumerHandle::Reader>::{dtor}() 行 55    C++    非用户代码。已加载符号。
     node.dll!blink::`anonymous namespace'::WebToFetchDataConsumerHandleAdapter::ReaderImpl::`scalar deleting destructor'(unsigned int)    C++    非用户代码。已加载符号。
     [内联框架] node.dll!WTF::OwnedPtrDeleter<blink::FetchDataConsumerHandle::Reader>::deletePtr(blink::FetchDataConsumerHandle::Reader *) 行 52    C++    已加载符号。
     [内联框架] node.dll!WTF::OwnPtr<blink::FetchDataConsumerHandle::Reader>::clear() 行 116    C++    已加载符号。
     [内联框架] node.dll!blink::Body::ReadableStreamSource::createDrainingStream() 行 65    C++    已加载符号。
     [内联框架] node.dll!blink::Body::createDrainingStream() 行 364    C++    已加载符号。
     node.dll!blink::Body::readAsync(blink::ScriptState * scriptState, blink::Body::ResponseType type) 行 233    C++    已加载符号。
     node.dll!blink::Body::arrayBuffer(blink::ScriptState * scriptState) 行 310    C++    已加载符号。
     [内联框架] node.dll!blink::ResponseV8Internal::arrayBufferMethod(const v8::FunctionCallbackInfo<v8::Value> &) 行 254    C++    已加载符号。

解决方案是把一些类的生命周期丢给SharedMemoryDataConsumerHandle来管。

解决了这问题,目前还有response['ok']没设置、音频无法播放的问题。音频的问题比较麻烦点。因为音频的一部分实现在content层。需要挪过来

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页