Потоковое видео с AR Drone
Я пытаюсь транслировать видео с моего дрона, но он не работает. Я установил ffmpeg версии 2.6, использую Ubuntu 14.04, node.js и модуль ar-drone npm. Я также использую версию 1.0 ар дрон. Мне сказали, что мне нужно использовать 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?
1 ответ
AR.Drone 1.0 обрабатывает видео иначе, чем версия 2.0 AR.Drone. Согласно Руководству разработчика AR.Drone,
- 1.0 использует пользовательский формат Parrot под названием "P264"; 2.0 использует стандарт H264 (раздел 7.2 Руководства).
- 1.0 потоковое видео по UDP; 2.0 потоки через TCP (раздел 2.10 Руководства).
Вы не сможете использовать библиотеку node-ar-drone для доступа к видеопотоку без значительного объема работы:
- Измените обработку видеопотока для использования UDP.
- Измените логику декодирования видео. P264 - это почти H264, и есть сообщения, что, хотя fffmpeg не может обрабатывать P264, ffplay может. Или, может быть, вы могли бы начать с декодера javascript H264 и изменить его в соответствии с описанием Parrot формата P264 (раздел 7.2.3 Руководства).
Но на самом деле, почти наверняка, лучший вариант - это просто купить AR.Drone 2.0 (новый доступен по цене около 300 долларов США с апреля 2015 года) и использовать существующий код, который поддерживается и используется другими людьми.