我正在开发一个 Android 应用程序,它基本上通过蓝牙连接 2 部智能手机。连接的目的是控制一台设备的摄像头(从机)并与另一台设备(主机)拍照/录像。
我已经在设备之间创建了蓝牙连接,一个充当客户端,另一个充当服务器。服务器正在打开摄像头并监听客户端是否正在执行任何操作(拍摄、缩放等)。
现在的问题是服务器(从机)如何向客户端(主机)显示他的摄像头源?
我可以在设备之间传输字节,在阅读了一些有关此问题的文章后,我认为应该将字节压缩为帧(由从站),然后作为图像打开并显示在屏幕上(在主站上)。
有人知道最好的方法是什么吗?有推荐的协议(protocol)或API吗?不同方法的优缺点是什么?
任何帮助将不胜感激。
最佳答案
通常蓝牙发送图像帧的速度非常慢,但您不需要发送每一帧。您将面临的一个问题是框架碰撞。蓝牙套接字将您的数据(帧)作为字节数组发送。因此,在从另一端接收数据时,大多数情况下前一帧和当前帧的字节会发生冲突。因此,您需要确保远程移动设备收到并成功处理第一帧。远程移动设备正在处理时创建的帧不应存储在缓冲区中以便稍后发送,而是应被忽略(不应发送)。有些帧可能会丢失,但您将作为实时源。现在Android手机将根据相机分辨率创建大帧预览。因此,您只需发送小尺寸的帧,在显示屏的剩余空间上您可以显示相机控件。
我已经在我的 Github 存储库中发布了一个示例项目。 Bluetooth Camera
关于android - Android 应用程序中通过蓝牙传输视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763111/