0

我正在使用我在互联网上找到的不同代码使用 AR Drone 2.0 处理视频流。我尝试ffplay tcp://192.168.1.1:5555从 AR Drone 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 ...');
});

这仅流式传输图像。我必须每秒刷新一次浏览器。

我的第三个选择是使用这个选项:

var arDrone=require('ar-drone')
var client= arDrone.createclient();
require('ar-drone-png-stream')(client,{port:8000})

它在很短的时间内传输了很多图像。延迟仍然很明显,我正在寻找视频。

还有其他方法可以显着降低视频流的延迟吗?

4

2 回答 2

0

现在,我在更新的 Tello 无人机上遇到了同样的问题。诀窍是强制比无人机提供的帧速率更高。否则,额外的帧将被缓冲,您将有一个不断增加的延迟。所以在最后添加 -framerate 35 就可以了!(或更高的值)

于 2020-03-22T20:10:05.873 回答
0

延迟多少?您还必须提供哪些其他选项来提供视频?

尽量减少缓冲区影响:

ffplay -vf setpts=PTS/2 tcp://192.168.1.1:5555
于 2017-09-06T05:16:23.357 回答