android - Android 应用程序中通过蓝牙传输视频

标签 android bluetooth camera video-streaming feed

我正在开发一个 Android 应用程序,它基本上通过蓝牙连接 2 部智能手机。连接的目的是控制一台设备的摄像头(从机)并与另一台设备(主机)拍照/录像。

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

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

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

有人知道最好的方法是什么吗?有推荐的协议(protocol)或API吗?不同方法的优缺点是什么?

任何帮助将不胜感激。

最佳答案

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

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

关于android - Android 应用程序中通过蓝牙传输视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763111/

相关文章:

android - 打开带有缩略图图标的相机应用程序

java - 将 JSONObject 转换为 HashMap<String, String>

android - onActivityResult 从未在 ActivityGroup 的 Activity 部分调用

android - 蓝牙扫描设备,频繁扫描后无法写入设备

android - 特定于应用程序的蓝牙连接

java - 为什么我得到 result.get(CaptureResult.CONTROL_AF_STATE); == 无效?

video - 共享 IP 摄像机源 (RTSP?)

android - ionic 框架 - Config.xml

Android 应用内订阅测试

bluetooth - 什么是蓝牙乐多广告?