整体框架是这样的,利用 Android 作为数据采集终端,用蓝牙或者 wifi-direct 作为网络传输的媒介, PC 上位机需要同时获取几个终端的录音数据和位置(暂时是人工输入的)数据,同时还要控制终端采集进程的开始、暂停和结束状态,怎么样设计上位机和采集终端的应答方式才能同时传输音频流、坐标数据以及控制信号呢?
我是 Android 新手,目前已经可以采集音频,也可以开启蓝牙连接并发送数据,写了个简单的 Python 服务器程序可以接收到数据了,现在就卡在数据应答的设计上了。不知道用 Socket 编程会不会特别复杂,有没有可以使用或者参考的库?我没有网络编程的经验,希望可以给些提示或者文档给我参考,谢谢。
1
hienchu 2015-09-07 16:15:20 +08:00
|
3
menc 2015-09-07 16:39:58 +08:00 via Android
请参考 mqtt 协议,为物联网和低网络条件量身定制的协议
|
4
hewwcn 2015-09-07 17:20:56 +08:00
udp 就好了。不会很复杂。之前做过类似硬件设备,是自己实现的通讯协议,可以实现简单的视频通话了。关于音频其实也可以走简单的走 udp ,然后接收端组帧再播放就可以了。
流媒体的播放控制是用 RTSP 这个协议。还有个 RTCP 协议。我觉得应该可以满足你的要求。 其实你想实现的功能就是一个没有视频流的 ip camera 吧。 |
6
joshz OP @hewwcn ,不单单是播放,需要对音频数据做进一步分析,对数据的完整性有要求,当然如果算法鲁棒性好的话可能 udp 也可以。
|
7
joshz OP 其实我的困扰是这些不同类型的数据如何混在一起传输,流数据要尽量保证实时性,其它数据发送的频率倒是不高,是分时切换呢还是用什么技术并行传输呢?哎,怪自己网络没学好。
|
8
jimzhong 2015-09-07 18:11:14 +08:00
以前做过一个音频传输的程序。主要参考了 shairport ,把控制和数据分开。我用的是 TCP ,因为对数据完整性要求比较高,而且只在内网使用,基本不拥塞。
|
9
wizardoz 2015-09-07 18:17:34 +08:00
为何要设计这种东西?选一种成熟的使用不好吗?
|
14
joshz OP @menc 你好, mqtt 协议我大致翻了一遍,用在我的项目上似乎是挺合适,但有个关键的问题是, mqtt 需要基于 TCP/IP 网络,在 Android 蓝牙和 wifi-direct 上可以使用吗?还是只能使用更定制化的 mqtt-sn ,但 mqtt-sn 似乎目前还不成熟。可能我没找到很详细的 mqtt 文档,可以提供吗?
|
15
joshz OP @menc 补充一下,在 Android 上使用 wifi 连接公共网络然后再使用 mqtt 交换数据是可行的,虽然我用于测试的 APP https://www.eclipse.org/paho/clients/android/ 很不稳定。所以应该感谢你的建议。不过如果能使用蓝牙这种相对低功耗的通信就更好了,不知道你有没有尝试过。
|