おはよう君需要なし

求不得苦な日々

小型ドローンWeekender Q4i FPVで遊ぶ

先日購入したWeekenderのQ4i FPVというドローンですが、 小型ながらWi-Fiで映像を見ながらコントロールすることができる優れものです。

前回は分解した記事を書きましたが、こんどはソフト的な側面から書きたいと思います。

nodemand.hatenablog.com

通信内容を見てみる

提供されているアプリはAndroidなので、簡単にパケットをキャプチャして見ることができます。まぁなにやらTCP/IPでごにょごにょ通信している模様。

f:id:yoh_mar28:20160204192436p:plain

動画はh264

パケットの内容を見てみると0x00000001で始まるパケットがかなり流れてきていることがわかります。調べてみるとh264のフォーマットであることがわかり、まぁなんというかそのまんま流れてきているみたいです。

軽く組んでみる

というわけで、流れてくるh264のパケットを再生するためにプログラムを組んでみました。

ドローン⇔自作プログラム⇔VLCプレイヤー

という感じで、ドローンとの通信を行いつつもVLCプレイヤーにストリームのデータを受け渡してやる中継器みたいなプログラムを組みました。

なんでVLCの機能を使って直接ドローンから動画をダウンロードしにいかないのかというと、動画ストリーミング開始コマンド(?)のパケットを最初に流し込んでやる必要があるためです。VLCでそういうことができるのかどうかについてはよく知らないのでプログラムを組んだほうが早かった。

問題

割とすんなり再生はできました(プログラムを経由する分、ラグが発生するけど)。が、30秒前後でストリーミングが途切れてしまう問題に直面しました。

それについては再度パケットをキャプチャしてみました。

実をいうと、このドローンから動画をストリーミングするには2本の通信を確立せねばなりません。キャプチャしたパケットではストリーミングとは別の通信のほうで定期的にパケットをやりとりしており、それが今回の問題の解決策でした。

というわけで別の通信で特定のパケットを定期的に送ってあげればストリーミングは途切れなく再生することができました。(20分ぐらいは再生できたかな)

というわけで

動画ができたので次はコントロールを!って感じですけど、さすがにそれは厳しい気がするので気が向いたらやるってことにしておきます(笑)

Weekender Q4i FPV WE-FPV-01 [日本正規品]

Weekender Q4i FPV WE-FPV-01 [日本正規品]