Tello_VideoをMacかつPython3.9(miniconda)でやる

なかなかうまくいかなかったので簡単なメモ

初めは実力不足でできなかった話なのでとりあえず後半を読んでください。

環境

M1 mac book air (Big Sur 11.1)

python3.9 (miniconda)

brew

試行錯誤

初めはこちらの記事を参考にcmakeで作成していました。

(補足)Python3で「Tello_Video」を動かす

記事自体はMacでのやり方は載っていないのですが、コメントで、投稿者様は古いmacのHigh Sierraでpythn3.9で動かせているようで、詳しい手順は執筆途中とのことだったので、自力でなんとができないかと試行錯誤しましたが結果的にできませんでした。

makeしてみると色々と足りないようだったのでffmpegとかboostとかbrewで入れたんですが、tello.pyでdecoderのインスタンスを作成する時の、つぎのエラーが結局解決できなかった。

TypeError: __init__() should return None, not 'NoneType'

CMakeLists.txtのpythonやboostのパスも確認したり、anacondaとbrewの相性かと思いanacondaにboostやcmake入れたりと色々やってみたが、うまくいかなかった。OpenCVでも試していたが0.5sec程度の遅延であまりにも遅かったのでなんとかしてdecoderの共有ライブラリがほしかった。

別案を考える

色々手を考えた結果、dji-sdkのdecoderはPython 2で2年前のものだったが、そこが引用していた元のdecoderはPython 3用に改修されていた。windowsとlinuxのことしか書かれていなかったが、cloneしてcmakeしてみた。

#include <utility>が足りなかったので足してcmakeし、 生成されたh264decoder.cpython-39-darwin.soをimportするとうまくいった。

特に引数も指定せず強引にcmakeしたけどあっさり動いた。

tello.pyはlibh264decoderをimportしていたので

import h264decoder as libh264decoder

として書き換えるとうまくtelloの方からストリームが取れた。

遅延も少なく試行錯誤した甲斐があってめでたし。

この記事が気に入ったらサポートをしてみませんか?