MQTT可以直接将音频流传输到Web客户端吗?

时间:2019-03-22 01:43:29

标签: javascript audio mqtt

我能够设置一个Arduino,将来自麦克风的音频流传输到托管MQTT服务器的linux服务器中。然后,我有一个golang脚本,该脚本订阅了MQTT服务器,将有效载荷作为二进制文件保存到磁盘,然后使用FFMPEG将二进制文件转换为.WAV文件。

是否有可能使Web浏览器仅使用客户端代码来订阅同一MQTT服务器,从Arduino接收音频有效载荷,并将音频几乎实时地流传输给听众的计算机扬声器?我看到了一个Paho Javascript Client库,可以帮助我连接到MQTT,但是它似乎以字符串形式接收有效载荷,这对我如何与音频流传输内容并不明显。因此,为什么我要问它是否可行/可行?

还是我需要构建另一个服务器端脚本来将MQTT数据作为音频数据流传输到Web客户端?

2 个答案:

答案 0 :(得分:0)

仔细查看Paho doc,这是一种虚构的事情,可以使用message.payloadBytes字段将消息有效负载作为二进制数据获取。

  

payloadBytes | ArrayBuffer |只读有效载荷作为ArrayBuffer

此处描述了一个示例:

https://www.hardill.me.uk/wordpress/2014/08/29/unpacking-binary-data-from-mqtt-in-javascript/

但是基本上,您最终会得到一个保存二进制数据的ArrayBuffer,然后可以将其转换为Typed Array并以所需的偏移量读取值。

答案 1 :(得分:0)

要确保它在所有环境中都能正常工作,请确保通过WebSocket使用MQTT连接到服务器。

以下是对此的讨论:Can a web browser use MQTT?