Проблемы с использованием Broadway.js и raspi-camera через websocket

Я хочу использовать 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.

Кто-нибудь знает, как это решить?

Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
Альтернативные WebSockets для netty/java: удвоение пропускной способности небольших сообщений
Этот пост - краткая презентация netty-websocket-http1 - альтернативной netty/java реализации RFC6455 - протокола WebSocket.
Очень простая установка Websocket с помощью Deno без каких-либо пакетов
Очень простая установка Websocket с помощью Deno без каких-либо пакетов
Здесь мы рассмотрим, как можно использовать Websocket в Deno и развернуть его в Deno deploy. Мы будем слушать Websocket, а также отправлять сообщения.
0
0
440
1

Ответы 1

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

Или вы можете попробовать старую версию Broadway, используя asm.js, а не WebAssembly. Это здесь.

Другие вопросы по теме