はじめに
- まだまだ実現はできていないのですが、何となく可能そうな方法は見えてきた感じはします。
- ただ、すぐに確認に使える Pepper 実機もないし、いったん内容を整理・まとめておこうと思います。
前提
- Pepper のカメラ映像を、外部の PC やタブレットのブラウザで、html5 の video タグを使用して表示することを想定します。
- Pepper とクライアントのみで構成できるのなら、そのほうが良いのですが、間にサーバも入る構成も検討します。
1. NAOqi API を使用する
方法
以下のどちらかの API を使用し、一定のタイミングで画像を取得し、クライアント側での表示画像を更新します。
1.1 ALPhotoCaptureProxy::takePicture(s)
1.2 ALVideoDeviceProxy::get(DirectRaw)Image(Local|Remote)
メリット・デメリット
メリット
- 比較的手軽に実現可能と思われます。
- ALFaceDetection 等、他の画像認識系 API との相性は良いと思われます。
デメリット
- fps は出ない(出せない)ように思いますので、頑張ってもパラパラ漫画でしょう。
2. NAOqi API を使用しない
方法
API は使用せず、ビデオデバイス直のデータを処理します。以下のどちらかのコマンドを使用し、適当な形式でデータを出力し、適当な方法で配信します。
2.1 FFmpeg を使用
2.2 GStremer を使用
適当な形式、適当な配信方法
適当な形式
Pepper 内蔵の FFmpeg, GStreamer で実行可能な、設定項目の形式を選択します。
あるいはサポート可能な外部サーバを用意して、Pepper と連携して処理します。
- 映像サイズ
- フレームレート
- ビットレート
- ファイル形式
- コーデック
適当な配信方法
Pepper 内蔵の FFmpeg, GStreamer で実行可能な配信方法を選択します。
あるいはサポート可能な外部サーバを用意して、Pepper と連携して可能な配信方法を選択します。
- HTTP Live Streaming (HLS)
- MPEG-DASH
- Real Time Streaming Protocol (RTSP)
Pepper 単体では HLS・DASH は難しそう。RTSP はもしかしたら、という感じでしょうか。
メリット・デメリット
メリット
- そこそこの fps は出せるのではないかと思われます。
デメリット
- 映像・音声配信に関する知識がそれなりに必要になります。
- 構成要素が多く、そこそこに見られるレベルの組み合わせを探すのが大変。
- ヘタなコマンドを実行すると、Pepper のカメラ機能が停止したり、接続が切れたりします。さらに Pepper の再起動が必要になるケースも発生します。原因は不明。
- 問題なく実行できたような場合でも、カメラに影響が出ているケースがあります。Choregraphe のビデオモニターが表示されなくなったり、映像が乱れたりします。原因は不明。
感想
- 何か 2 は大変なだけな感じもしてきましたが、やはりそこそこキレイな映像を見たい。
- もう少し映像・音声関連知識とコマンドの使い方を勉強しないといけない。