news 2026/4/16 13:33:51

python mqgg 发送 json 文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python mqgg 发送 json 文件
pip install paho-mqtt

发送json,含有音频文件;

import json, base64 import paho.mqtt.client as mqtt import time def on_connect(client, userdata, flags, rc): if rc == 0: print("[A] Connected to broker") client.subscribe(TOPIC_SUB) print(f"[A] Subscribed to {TOPIC_SUB}") else: print(f"[A] Connection failed: {rc}") def on_message(client, userdata, msg): print(f"[A] Received message on '{msg.topic}': {msg.payload.decode()}") if __name__ == '__main__': #install "pip install paho-mqtt" BROKER = "192.168.8.127" BROKER = "localhost" PORT = 1883 TOPIC_SUB = "ue/state" # 订阅状态 TOPIC_PUB = "ue/command" # 发布命令 client = mqtt.Client(client_id="ClientA") client.on_connect = on_connect client.on_message = on_message client.connect(BROKER, PORT, keepalive=30) # non-blocking loop client.loop_start() wav_path = r"D:\data\audios\post_2.wav" # 发送一些命令 for i in range(5000): msg = f"command {i}" with open(wav_path, "rb") as f: audio_bytes = f.read() audio_b64 = base64.b64encode(audio_bytes).decode("utf-8") msg_audio = json.dumps({ "type": "audio", "data": audio_b64, }) client.publish("ue/messages", msg_audio) # ===== 发送命令 ===== msg_cmd = json.dumps({ "type": "command", "data": "pause", }) # client.publish("ue/messages", msg_cmd) print(f"[A] Sent: {msg}") time.sleep(3) client.loop_stop() client.disconnect()

接收json,含有音频文件

import json import base64 import paho.mqtt.client as mqtt import os # ====== 配置 ====== BROKER = "localhost" # MQTT Broker PORT = 1883 TOPIC_SUB = "ue/messages" # 订阅 Topic SAVE_DIR = r"D:\data\audios_received" os.makedirs(SAVE_DIR, exist_ok=True) file_index = 0 # ====== MQTT 回调 ====== def on_connect(client, userdata, flags, rc): if rc == 0: print("[B] Connected to broker") client.subscribe(TOPIC_SUB) print(f"[B] Subscribed to {TOPIC_SUB}") else: print(f"[B] Connection failed: {rc}") def on_message(client, userdata, msg): global file_index try: payload_str = msg.payload.decode('utf-8') data = json.loads(payload_str) if data.get("type") == "audio": audio_b64 = data.get("data", "") if not audio_b64: return audio_bytes = base64.b64decode(audio_b64) file_path = os.path.join(SAVE_DIR, f"received_{file_index}.wav") file_index += 1 # 自动判断是否是完整 WAV if is_wav_file(audio_bytes): # 已经是完整 WAV,直接写入文件 with open(file_path, 'wb') as f: f.write(audio_bytes) print(f"[B] Saved complete WAV to {file_path}") else: # 裸 PCM,需要自己加 WAV 头 # 默认假设 16-bit PCM,单声道,采样率 44100 save_pcm_as_wav(file_path, audio_bytes, sample_rate=44100, num_channels=1) print(f"[B] Saved PCM as WAV to {file_path}") elif data.get("type") == "command": cmd = data.get("data") print(f"[B] Received command: {cmd}") except Exception as e: print(f"[B] Error processing message: {e}") # ====== 判断是否完整 WAV 文件 ====== def is_wav_file(data_bytes): # WAV 文件头前4字节是 "RIFF" return data_bytes[:4] == b'RIFF' # ====== 将 PCM 数据写入 WAV 文件 ====== def save_pcm_as_wav(file_path, audio_bytes, sample_rate=44100, num_channels=1): import wave with wave.open(file_path, 'wb') as wf: wf.setnchannels(num_channels) wf.setsampwidth(2) # 16-bit wf.setframerate(sample_rate) wf.writeframes(audio_bytes) # ====== 主程序 ====== if __name__ == "__main__": client = mqtt.Client(client_id="ClientB") client.on_connect = on_connect client.on_message = on_message client.connect(BROKER, PORT, keepalive=30) client.loop_forever()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 14:17:51

springboot_ssm808图书借阅挂失崔还系统功能全--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着信息化技术的快速发展,图书馆管理系统逐渐从传统的手工管理模式向数字化、智能化方向转变。基于Sprin…

作者头像 李华
网站建设 2026/4/13 19:36:31

【奖励到账】CSDN AI 社区镜像创作激励活动第三批奖励正式发放!

家人们注意啦!CSDN AI 社区镜像创作激励活动第二批现金奖励已正式发放,CSDN再次新增开发者 “技术变现” 赛道,还没参与的你,速来 get 这份躺赢攻略,下一批奖励名单说不定就有你! 1月21日:第三…

作者头像 李华
网站建设 2026/4/15 21:23:24

springboot_ssm809基于SSM架构的网上书城系统图书销售--论文

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 摘要 随着互联网技术的快速发展,电子商务已成为现代商业活动的重要组成部分。图书销售作为传统行业之一&#x…

作者头像 李华
网站建设 2026/4/13 10:37:33

AI大模型开发入门到精通:一本助你转型的必备书籍

文章介绍了《AI大模型开发之路》一书,为转型AI大模型开发工程师提供全面指导。内容涵盖Python编程、机器学习基础、Transformer模型原理、API调用实战、LangChain框架应用,以及项目部署等全流程。通过系统化学习路径,从理论到实践帮助读者掌握…

作者头像 李华
网站建设 2026/4/10 9:15:11

强烈安利9个AI论文写作软件,MBA毕业论文轻松搞定!

强烈安利9个AI论文写作软件,MBA毕业论文轻松搞定! AI 工具如何改变论文写作的未来 在当前学术研究日益数字化的背景下,AI 工具正在成为研究生和研究人员不可或缺的助手。尤其对于 MBA 学生而言,撰写高质量的毕业论文不仅是学术能力…

作者头像 李华