MAixPy組み込みモジュールと動画再生

MAixPy、つまりMAix用のMicroPythonですが、組み込まれたモジュールが充実しています。どんなモジュールが入っているのか、調べてみました。(ファームウェアv0.4が対象です。)

まず、こちらが一覧です。

下線を引いてあるのが、MAixPy独自(MicroPython自身やMicroPython-Libに含まれていない)モジュールと思われるものです。

これらのモジュールと、オンラインマニュアルへのリンク先を以下にまとめます。

KPU, MAix, board
ハードウェア由来のモジュールです。KPUはニューラルネットワークのアクセラレータで、モデルをロードするのはこのモジュールを使います。
MAixはSiPとしてのMAixの機能をサポートする各種クラスを含むモジュールです。現在使えるのはGPIOFPIOAFFT、I2S(中国語)、Audio(中国語)、MIC_ARRAY(BBS)、freq(中国語)です。
boardはグローバル変数board_infoとBoard_Infoクラスを含みます。このクラスはピンにアクセスするためのクラスです。WiFiモジュールのイネーブル信号もここに含まれます。

image, nes
ハードウェアとは独立したライブラリです。imageは、MicroPythonとマシンビジョン関連機能を搭載したカメラモジュールであるOpenMV由来のモジュールです。画像ファイルの入出力や画像処理、描画、QRコードの認識などができます。
nesは以前書いたとおり、既存のNESエミュレータにMicroPythonのAPIを付けたものです。
他に、LittlvGLというGUIツールキットのクラスもマニュアルには載っているのですが、ファームウェアv4.0ではデフォルトでは組み込まれない設定になっています

audio, lcd, sensor, touchscreen, video
周辺デバイスの入出力のためのモジュールです。それぞれオーディオ入出力、LCD、イメージセンサ(カメラモジュール)、タッチスクリーン、映像入出力を扱います。audio、videoのクラスはメディアプレイヤーのようなもので、ファイルへの入出力も含んでいます。

fpioa_manager, pye_mx
MicroPythonで書かれた小規模なモジュールです。FPIOAはデバイスの機能とGPIOピンとのマップを管理するものです。pye_mxはMicroPythonで書かれたスクリーンエディタpyeを移植したものです。

◆その他:math
なぜかmathモジュールが二つあります。謎です。

videoモジュールを使ったビデオ再生は結構ちゃんと動きます。AVIファイルの形式は制約があり、Videoは320×240のMJPEG、AudioはPCMのみとなっています。デコーダはソフトでコードで、picojpegが使われているようです。

マニュアルのサンプルスクリプトに、SDカードに保存したAVIを再生する例がついているので試してみました。
ご丁寧にサンプルとしてBadAppleのAVIファイルも掲載されています。

コードはこんな感じです。(サンプルスクリプトそのものです。)

ボード上のカメラモジュールからの録画もできますが、こちらはカメラから画像として取得したものをAVIファイルに書き出すもので、ぎりぎり動画といえるフレームレート、しかも時々画像にノイズが載ります。品質的にはESP32 Cameraのうほうが良いかもしれません。

また、作成されるAVIファイルにインデックス情報がなく、普通のプレイヤーだと再生できません。VLC Media Playerでは再生できました。

コメント