在 android 应用中通过蓝牙传输视频

Video streaming over Bluetooth in android app

我正在开发一个 android 应用程序,基本上可以通过蓝牙连接 2 部智能手机。连接的目的是控制一台设备相机(从机)并与另一台设备(主机)一起拍摄pictures/videos。

我已经在设备之间创建了蓝牙连接,一个充当客户端,另一个充当服务器。服务器正在打开相机并监听客户端是否正在执行任何操作(拍摄、缩放等)。

现在,问题是服务器(从)如何向客户端(主)显示他的摄像头画面?

我可以在设备之间传输字节,在阅读了一些关于这个问题的文章后,我认为字节应该被压缩成帧(由从机)然后作为图像打开并显示在屏幕上(在主机上).

有谁知道最好的方法是什么?任何推荐的协议或 API?不同方法的优缺点是什么?

任何帮助将不胜感激。

通常蓝牙发送图像帧的速度很慢,但您不需要发送每一帧。您将面临的一个问题是帧冲突。蓝牙套接字将您的数据(帧)作为字节数组发送。因此,大多数时候从另一端接收数据时,前一帧和当前帧的字节会发生冲突。因此,您需要确保远程移动设备接收到第一帧并成功处理。远程移动设备正在处理时创建的帧不应存储在缓冲区中以供稍后发送,而应忽略它们(不应发送)。有些帧可能会丢失,但您将作为实时源工作。现在 android 手机会根据相机分辨率创建大帧预览。所以你只需要发送小尺寸的帧,在显示器的剩余 space 上你可以显示相机控制。

我在我的 Github 存储库中发布了一个示例项目。 Bluetooth Camera