Pepper のカメラ映像をライブ配信する実験 その3 (いったん整理・まとめ)

More than 1 year has passed since last update.

はじめに

  • まだまだ実現はできていないのですが、何となく可能そうな方法は見えてきた感じはします。
  • ただ、すぐに確認に使える 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 は大変なだけな感じもしてきましたが、やはりそこそこキレイな映像を見たい。
  • もう少し映像・音声関連知識とコマンドの使い方を勉強しないといけない。