【问题标题】:Video camera interface between beaglebone and androidbeaglebone 和 android 之间的摄像机接口
【发布时间】:2012-11-06 17:12:22
【问题描述】:

我正在尝试开发一个应用程序,其中 Beaglebone 平台从与其连接的摄像头捕获视频图像,然后(通过互联网套接字)将它们发送到 Android 应用程序,以便应用程序显示视频图像。

我已经读到 openCV 可能是从相机捕获图像的一个很好的选择,但是我不确定如何通过套接字发送图像。

另一方面,我认为Android应用程序接收到的视频图像可以用简单的图像来处理。考虑到这一点,我认为我可以每秒左右刷新一次图像。

我不确定我的实施方式是否正确,因此我非常感谢您提供的任何建议和帮助。

在此先感谢您,格斯。

【问题讨论】:

    标签: android beagleboard


    【解决方案1】:

    OpenROV 的人已经做了你所说的事情。他们没有使用定制的 Android 应用程序(这当然是可能的),而是简单地使用网络浏览器来显示捕获的图像。

    https://github.com/OpenROV/openrov-software

    此应用程序使用 OpenCV 执行捕获和分析,使用 Node.JS 应用程序通过 socket.io 将数据传输到 Web 浏览器,并使用 Web 客户端显示视频。此处给出了有关其工作原理的架构描述:

    http://www.youtube.com/watch?v=uvnAYDxbDUo

    你也可以看看运行类似 mjpg-streamer 的东西:

    http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1051&context=cpesp

    【讨论】:

    • 非常感谢您提供的信息。根据我的检查,他们正在使用 java 应用程序进行数据传输,我怎么能通过 C 程序来做到这一点(通过套接字传输信息)?对客户端编程有什么想法吗?另外,您知道是否可以使用 Angstrom 发行版来做同样的事情?我在问你,因为我找不到任何联系他们的链接。
    • 它实际上是一个 JavaScript 应用程序,它是与 Java 不同的语言。他们使用 OpenCV 进行视频捕获。
    • 当然可以在 Angstrom 下做同样的事情(它附带了安装的 OpenCV 库——你可以看到我的BeagleStache demo。也可以只用 C 来做整个事情,但您需要熟悉套接字编程。streaming to Android using RTP 的示例可能对您有用。
    • 如果您不想使用 JavaScript 代码,我添加了另一个链接来向您展示另一种架构。我只是认为 Node.JS 方法是最优雅的,因为它不需要任何特殊的客户端应用程序——只需要一个浏览器。
    • 非常感谢您提供的所有信息,这非常有帮助。我真的很感激。
    【解决方案2】:

    请注意,将视频流显示为一组图像会对性能产生很大影响。例如,如果您不注意如何对每个帧进行编码,则可能会使两个系统之间的流量增加一倍以上。 ARGB 需要 32 位来编码一个像素,YUV 需要 12 位,因此即使考虑到帧压缩,您仍然需要将每帧的存储量翻倍。此外,渲染 ARGB 比渲染 YUV 慢得多,因为大多数 Android 手机实际上都有硬件优化的 YUV 渲染(因为 GPU 可以直接在显存中 blit YUV)。此外,渲染单独的帧作为方法通常使sone采取简单的方法并在画布上渲染位图,如果您对 10-15 fps 的内容感到满意,但它永远无法达到 60 fps,并且可以仅在极少数手机上达到 30 fps 的峰值(非持续)。

    如果 Beaglebone 板上有硬件 MPEG 编码器,则应使用它来编码和流式传输视频。这将允许您直接将 MPEG 流传递到标准 Android 媒体播放器进行渲染。当然,使用标准媒体播放器将无法让您实时处理视频流,因此根据您的场景,这可能不适合您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-26
      • 1970-01-01
      • 2023-03-08
      • 2012-09-21
      • 1970-01-01
      • 2017-02-05
      相关资源
      最近更新 更多