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层。需要挪过来

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值