我需要在浏览器端解码h264数据,因为我正在使用emscripten在Web Assembly中构建openh264库。 我已经成功构建它,并尝试在Java脚本中使用它来解码h264数据。但是我在下一行时遇到一个错误,
var open_decoder = Module.cwrap('open_decoder', 'number', null);
错误是:未捕获的TypeError:Module.cwrap不是函数
如果有人用emscripten构建了openh264,请帮助我解决问题。
按照我用emscripten构建openh264的步骤。
注意:openh264的代码已从github(ttyridal)下载,并且已经具有emscripten主管的make文件。
答案 0 :(得分:0)
您可能正在尝试初始化Emscripten运行时之前使用Module
,所以Module.cwrap
是未定义的。
要确保运行时已准备就绪,请将代码放在Module.onRuntimeInitialized
内,如以下示例所示:
<!doctype html>
<html>
<body>
<script>
var Module = {
onRuntimeInitialized: function() {
my_add = Module.cwrap('my_add', 'number', ['number', 'number'])
alert('1 + 2 = ' + my_add(1, 2));
},
};
</script>
<script async type="text/javascript" src="index.js"></script>
</body>
</html>
查看this github repo中的完整示例
答案 1 :(得分:0)
-s EXTRA_EXPORTED_RUNTIME_METHODS=["cwrap"]
在编译源代码时在命令行中包含以上内容
emcc source.c -s EXPORTED_FUNCTIONS=['_my_add'] -s EXTRA_EXPORTED_RUNTIME_METHODS=["cwrap"]