2012-11-01 95 views
2

今天我看到很多有兴趣使用移动设备寻找蓝牙视频流解决方案的人,但是我还没有找到任何方便的意见来描述如何实现这样的功能。WiFiCameraApp中的蓝牙视频流

一方面,我有比较抽象的信息,为了成功的视频流,两个设备应符合视频分布配置文件(VDP),这是蓝牙配置文件的数量。

另一方面,我知道iOS和Android都不提供用于使用VDP的API。

在App Store中有WiFi Camera应用程序,它允许通过蓝牙将视频从一个iOS设备流式传输到另一个设备,因此我不知道该功能是如何实现的,并且有任何方法可以使用Android和iOS API执行相同操作?

回答

6

VPD位于蓝牙的较低协议中,称为L2CAP,它与UDP很相似(因为它是无连接的,因此速度更快),并使用SDP记录广播设备上的服务信息。 L2CAP/SDP可通过BlueZ堆栈在Android上访问。所有的VDP,A2DP和其他服务都在这个级别上。我已经通过VP8编码的L2CAP完成了从Android手机到Windows的视频流,因此这是可能的,但是根据制造商的不同,有一些限制 - 例如,HTC至少在2.1版本中不允许访问蓝牙守护进程,所有BlueZ调用失败的访问限制错误,而相同的代码在摩托罗拉和索尼爱立信上运行良好。至于iOS,据我研究,它不允许直接与L2CAP交互,我想这是因为操作系统可能希望在L2CAP级别发布它自己的服务,并且如果第三方软件启动在那里添加太多记录,他们可能开始冲突。所以你最适合iOS的是RFCOMM协议,它在堆栈中较高,与TCP相似。基本上它是2个节点之间的串行连接,没有服务条目或其他,所以你需要创建你自己的协议。如果还有其他知识可以分享,我可以提供帮助,我也可以提供一些关于这个主题的论文的速度基准。

+0

感谢您的回复。你做过的很棒的工作。让我猜猜,你是否使用NDK与BlueZ堆栈的L2CAP部分进行通信以进行即时交互?而且据我了解,Apple不提供与RFCOMM交互的框架,所以应该以其他方式完成? – teoREtik

+1

是的,在Android上,我通过NDK完成了所有的编码。我不想误导你,我实际上不记得iOS是否有直接用于RFCOMM的API,但你可以看看BTstack项目(http://code.google.com/p/btstack /),它声称支持iOS。 –

+0

伟大的链接,非常感谢) – teoREtik