我能够设置一个Arduino,将来自麦克风的音频流传输到托管MQTT服务器的linux服务器中。然后,我有一个golang脚本,该脚本订阅了MQTT服务器,将有效载荷作为二进制文件保存到磁盘,然后使用FFMPEG将二进制文件转换为.WAV文件。
是否有可能使Web浏览器仅使用客户端代码来订阅同一MQTT服务器,从Arduino接收音频有效载荷,并将音频几乎实时地流传输给听众的计算机扬声器?我看到了一个Paho Javascript Client库,可以帮助我连接到MQTT,但是它似乎以字符串形式接收有效载荷,这对我如何与音频流传输内容并不明显。因此,为什么我要问它是否可行/可行?
还是我需要构建另一个服务器端脚本来将MQTT数据作为音频数据流传输到Web客户端?
答案 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?