NAOqi ライブストリーミングについて
Pepper / NAO のカメラ、マイクの情報をライブでストリームできないかというお問い合わせをよく受けます。
「できるはずです。カメラ、マイクのライブ情報を取得するサンプルは
Capturing audio and video — Aldebaran 2.1.2.17 documentation
で確認できます。これをライブストリームするためには例えば ffmpeg などが使います。」
といった感じでお伝えしているのですが、実際自身で試したことがなく、どこまで実現性があるのか自分自身疑問ではありました。
で作ってみました。カメラ、マイクの情報をライブで取得し、PC に表示、ならびにマイクからの音を再生するところまで作ってみました。
クロスプラットフォームな Qt ならびに NAOqi SDK を使っていますので、理屈上 Windows, Mac, Linux で動くはずです。ただ現状 Mac でしか動作確認はしていません。
ソースコードはコンパイル、実行する上で幾つか注意があります。
- 別途、NAOqi C++ SDK をインストールしておいてください。手順は次に説明しています C++ SDK Installation — Aldebaran 2.1.2.17 documentation
- 開発ツールは Qt Creator を使いました。
- NAOqi は内部で Qt フレームワークを使っています。Qt Creator が使う Qt フレームワークのバージョンは NAOqi が利用している Qt ライブラリーとバージョンを一致させてください。 NAOqi が利用している Qt ライブラリーのバージョンは NAOqi SDK のディレクトリの中の lib ディレクトリのの中を調べればわかるかと思います。
- NAOqi と連携するところは別ライブラリとしてコンパイルします。ビルドをするためのバッチを buildNAOqiInterface.sh というスクリプトで用意しました。Qt Creator でプロジェクトをビルドする前に、このスクリプトを実行し、NAOqi と連携するライブラリを生成しておきます。
- 実行するには Mac の場合、環境編す DYLD_LIBRARY_PATH を編集します。Qt Creator の プロジェクト設定で環境変数を追加することで対応できます。DYLD_LIBRARY_PATH にNAOqi C++ SDK をインストールしているディレクトリ配下の /lib ディレクトリとプロジェクトディレクトリの一階層上に上がり build/lib ディレクトリを追加します。これらは DYLD_LIBRARY_PATH にもとから入っている環境変数よりも前に来るように定義します。(アプリとしてパッケージするときには install_name_tool を使うことでこのあたりの煩わしさを解消できるようです。)
PCに来た情報をインターネットにライブストリームするところはまだ作り込みできていません。まずは時間を見つけて音声周りの改善をもう少し検討したいと思っています。