Я хочу использовать PI для управления созданным мною маленьким автомобилем. Я хочу управлять этим через веб-интерфейс, а также хочу использовать PI-камеру для прямой трансляции во время вождения.
Я использую nodejs на PI с этим модулем: https://www.npmjs.com/package/raspivid-stream, чтобы получить поток с PI-камеры. Вот мой код nodejs:
var raspividStream = require('raspivid-stream');
var stream = raspividStream();
wss.on('connection', function connection(ws) {
ws.on('message', function incoming(message) {
console.info('received: %s', message);
});
stream.on('data', (data) => {
ws.send(data, { binary: true }, (error) => { if (error) console.error(error);
});
});
и вот index.html:
...htmlstuff...
<canvas id = "stream"></canvas>
<script src = "decoder.js"></script>
<script src = "player.js"></script>
<script>
var connection = new WebSocket('ws://raspberrypi:8443');
var p = new Player();
p.canvas = document.getElementById("stream"); // the canvas - p$
connection.onopen = function () {
connection.send('Ping'); // Send the message 'Ping' to $
};
connection.onerror = function (error) {
console.info('WebSocket Error ' + error);
};
connection.onmessage = function (e) {
console.info(e.data);
p.decode(e);
};
</script>
...htmlstuff...
Пока я получаю эту ошибку в консоли браузера:
wasm streaming compile failed: TypeError: Failed to execute 'compile' on 'WebAssembly': Incorrect response MIME type. Expected 'application/wasm'.
falling back to ArrayBuffer instantiation
failed to asynchronously prepare wasm: CompileError: AsyncCompile: Wasm decoding failed: expected magic word 00 61 73 6d, found 3c 21 44 4f @+0
CompileError: AsyncCompile: Wasm decoding failed: expected magic word 00 61 73 6d, found 3c 21 44 4f @+0
Uncaught (in promise) abort({}). Build with -s ASSERTIONS=1 for more info.
Кто-нибудь знает, как это решить?


В последней версии Broadway есть статический файловый ресурс под названием avc.wasm. Вам нужно, чтобы ваш сервер доставил его с правильным типом содержимого MIME, application/wasm, чтобы декодер мог его загрузить.
Или вы можете попробовать старую версию Broadway, используя asm.js, а не WebAssembly. Это здесь.