来自 AR 无人机的流式视频

Posted

技术标签:

【中文标题】来自 AR 无人机的流式视频【英文标题】:Streaming Video from AR Drone 【发布时间】:2015-03-12 01:41:06 【问题描述】:

我正在尝试从我的 ar 无人机流式传输视频,但它无法正常工作。我已经安装了 ffmpeg 2.6 版,正在使用 Ubuntu 14.04、node.js 和 ar-drone npm 模块。我也在使用 1.0 版的 ar 无人机。有人告诉我我需要使用 2.0,因为这是构建模块所使用的,但如果我不需要,我宁愿不购买新的。以下是我正在使用的代码

var arDrone = require('ar-drone');
var http    = require('http');

console.log('Connecting png stream ...');

var pngStream = arDrone.createClient().getPngStream();

var lastPng;
pngStream
  .on('error', console.log)
  .on('data', function(pngBuffer) 
    lastPng = pngBuffer;
  );

var server = http.createServer(function(req, res) 
  if (!lastPng) 
    res.writeHead(503);
    res.end('Did not receive any png data yet.');
    return;
  

  res.writeHead(200, 'Content-Type': 'image/png');
  res.end(lastPng);
);

server.listen(8080, function() 
  console.log('Serving latest png on port 8080 ...');
);

当我运行它并在浏览器中转到 http://localhost:8080/ 时,我收到错误消息“尚未收到任何 png 数据”。是不是因为我用的是1.0版本的无人机??

【问题讨论】:

我不认为 node-ar-drone 在无人机 1.0 版上经过了很好的测试。除了 PNG 流之外的所有东西都有效吗? 看起来 AR.Drone 的版本 1 可能使用 UDP 传输视频流,而版本 2 使用 TCP。这是一个很长的镜头,但也许您可以尝试将 node-ar-drone 代码转换为使用 UDP。 【参考方案1】:

AR.Drone 1.0 处理视频的方式与 AR.Drone 2.0 版本不同。根据AR.Drone Developer's Guide,

1.0 使用名为“P264”的自定义 Parrot 格式; 2.0 使用标准 H264(指南第 7.2 节)。 1.0 通过 UDP 流式传输视频;通过 TCP 的 2.0 流(指南的第 2.10 节)。

如果没有大量工作,您将无法使用 node-ar-drone 库访问视频流:

将视频流处理更改为使用 UDP。 更改视频解码逻辑。 P264 几乎 H264,还有reports that while fffmpeg can't handle P264, ffplay can。或者您可以从javascript H264 decoder 开始,然后根据 Parrot 对 P264 格式的描述(指南的第 7.2.3 节)对其进行修改。

但实际上,几乎可以肯定,最好的选择是简单地购买 AR.Drone 2.0(截至 2015 年 4 月,新版价格约为 300 美元)并使用其他人支持和使用的现有代码。

【讨论】:

以上是关于来自 AR 无人机的流式视频的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 nodejs 从 ar 无人机获取纬度信息?

从相机跟踪物体; PID控制;鹦鹉 AR 无人机 2

如何配置 ar 无人机以使用 node.js 检测标签?

行业案例 | 自在穿梭田间,AR 应用化解农业无人机的“新烦恼”

行业案例 | 自在穿梭田间,AR 应用化解农业无人机的“新烦恼”

行业案例 | 自在穿梭田间,AR 应用化解农业无人机的“新烦恼”