WebAssembly 共享数组缓冲区中的 WebAudioWorklet 未定义

问题描述 投票:0回答:1

我试图了解如何使用 emscripten 的 Wasm Audio Worklets API 在 WebAssembly 中编译 Audio Worklet。

使用API参考教程中列出的代码这里并使用以下命令编译代码:

em++ audioworklet.cpp -sAUDIO_WORKLET=1 -sWASM_WORKERS=1 -o worklet.html

我在浏览器(Firefox 和 Chrome)中遇到错误:

Uncaught ReferenceError: SharedArrayBuffer is not defined

我还尝试在 emscripten 存储库上编译一些 webaudio 测试代码,例如使用

audioworklet.c
而不是
emcc
em++
,但我总是遇到相同的错误。

我做错了什么?

您可以找到根据上面提供的编译指令自动生成的粘合代码的副本(

js
html
):https://gist.github.com/ddgg-el/e6819f773abbfc75385c7fa15d79b692

该错误是由

worklet.js

的第 459 行引发的

谢谢你!

webassembly web-audio-api emscripten audio-worklet
1个回答
0
投票

我认为您很有可能没有设置如今启用

SharedArrayBuffer
支持所必需的必需标头。

Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

据我所知,在本地主机上运行网站时甚至需要设置这些标头。

您可以在 MDNweb.dev 上阅读更多相关信息。

© www.soinside.com 2019 - 2024. All rights reserved.