28
Copyright © 2015 Device WebAPI Consortium. All Rights Reserved. 山添 隆文 2016/2/17 WebRTCカンファレンス ショートプレゼン資料】 色々なデバイスの映像を使った WebブラウザでのWebRTC映像中継

色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Embed Size (px)

Citation preview

Page 1: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

山添 隆文

2016/2/17

【WebRTCカンファレンス ショートプレゼン資料】

色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継

Page 2: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

現時点でのWebRTCの課題:映像の取り扱い

映像入力 WebRTC 映像出力

加工 加工

Webブラウザ経由でのWebRTCの映像入力は標準のカメラ入力のみで、外部のカメラやCanvasを相手に送ることができない。映像出力の加工は可能で、外部の映像出力にも送ることができる(実際は遅延等の問題は残る)。

外部映像入力外部映像出力

映像

内蔵カメラから映像を変更できない

自分 相手

Page 3: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

WebRTCの課題:音声の取り扱い

音声入力 WebRTC 音声出力

加工 加工

WebRTCで受信した音声を加工・解析できない

外部音声入力外部音声出力

Webブラウザ経由でのWebRTCの音声入力は加工可能。しかし、WebRTCからの音声出力のストリームを取り出すことはできず、そのため加工や外部の音声出力の利用もできない。

自分 相手

映像と音声で応用や外部機器連携できる範囲が逆になっており、入力・出力の両方に課題がある状況

Page 4: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

UV4L:ドライバそのものがWebRTCクライアントとして動作。現状はラズベリーパイでの映像のみ。

仮想ドライバ方式

外部の映像入力を取り扱う方法

PCやドライバを仮想化できる環境、標準カメラ入力を設定できる環境であれば、ブラウザからでも利用可能だが、スマートフォンでは難しい。

【出展】Infinitegra TechBlogよりhttp://www.infinitegra.co.jp/blog/?p=90

Page 5: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

【SkyWayの音声認識APIイメージ図】(https://github.com/nttcom/SkyWay-SpeechRecより利用可能)

NTTコミュニケーションズ プレスリリース「WebRTCプラットフォーム「SkyWay」にて世界初のマルチブラウザ対応音声認識APIなどを無償公開」より http://www.ntt.com/release/monthNEWS/detail/20150728.html

クライアントの音声出力ではなく、サーバサイドにて音声認識。

音声出力を取り扱う方法

Page 6: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

ドローン

USB接続のWebカメラ

HDMI入力

THETA S

スマートフォンのカメラ

スマートフォンのスクリーンキャスト

スマートグラス(Vuzix M100)

Androdスマートフォン(テザリング等で外部のデバイスと接続)

アクションカメラ

サーマルカメラ

ネイティブアプリとしてのWebRTC処理映像入力の共通化

Webブラウザ

デバイスやWebRTC処理制御のための共通的なWebインターフェース

NWカメラ ネイティブアプリ

OMA GotAPI/Device WebAPI

を利用

やってみた事

様々な仕組み・開発環境・通信プロトコルのカメラ

映像リソース

Page 7: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Chromeブラウザ

ドローン

USB接続のWebカメラ

HDMI入力

THETA S

スマートフォンのカメラ

スマートフォンのスクリーンキャスト

スマートグラス(Vuzix M100)

Androdスマートフォン(テザリング等で外部のデバイスと接続)

アクションカメラ

サーマルカメラ

WebRTC

映像入力の共通化

NWカメラ

これからできそうな事

canvas

デバイス制御のための共通的なWebインターフェース

参考:https://html5experts.jp/shumpei-shiraishi/18355/

OMA GotAPI/Device WebAPI

を利用映像リソース

Page 8: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

・スマートフォン上にセキュリティや汎用性を考慮したWebインターフェース(スマートフォン上の仮想サーバ)を実現する取り組み

・2014年2月にAT&TのブライアンさんがOMAでWork Item化ブライアンさんはW3C Push APIのエディターなどもされていて、Push APIもOMAで策定したものが元になっている

・NTTドコモにて仕様策定、OSS実装の展開を進め、2015年4月にCandidate Release、ドコモ、ソフトバンク等でデバイスWebAPIコンソーシアム設立

※OMA(Open Mobile Alliance):携帯電話関連の標準化団体※GotAPI:Generic Open Terminal API

OMA GotAPI(デバイスWebAPI)とは?

Page 9: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

GotAPIのAPIアクセスのデザインパターン

・One shot data : HTTP GET/POSTでの単純アクセス例:アクセスした瞬間のセンサーの値を取得(繰り返し

値が欲しい場合はポーリング)

・Event driven data : PUT/DELETE、WebSocketでのイベント処理例:センサーの値に変化があった瞬間の値を連続的に自動取得

・Streaming data : URIの直接参照例:OSやGotAPIの内部構造を経由せずにリソースとしてセンサー

の値をアプリから直接利用。

シンプルで手軽なHTTPアクセスと、効率的なWebSocketによるイベント処理を両立

Page 10: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

セキュリティの担保

OMAからもWhite Paperを公開http://device-webapi.org/link.html

ようするに、スマホで動作するLocalhostに様々な観点でセキュリティ対策を実施したもの

Page 11: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

セキュリティ対策の基本的なコンセプト

ライブラリ

Kernel

IPネットワーク処理・管理

フレームワーク

ネイティブアプリ

スマートフォンOS

WebブラウザWebブラウザ・NW処理からアクセスできる範囲 ネイティブアプリ

としてアクセスできる範囲(Sandbox)

ネイティブアプリとWebブラウザ・IPネットワークからアクセスできる範囲

スマートフォン上にWebインターフェースを構築することで、アプリ、Webのアクセス範囲の違いを使ったセキュリティ担保を実現

アプリストアアプリのユニーク性を

Origin情報にドメイン名(Origin情報)

HTTPSで安全に通信をするだけでなく、HTTP通信でも問題がない環境の条件を模索

※もちろんユーザ認証情報等をHTTPのレイヤーで扱わないことが前提

Page 12: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

デバイスWebAPI(GotAPI)でのWebRTC課題解決

WebRTC非対応のWebブラウザ/ネイティブアプリ

デバイスWebAPI

WebRTCプラグイン WebRTC

外部カメラ用プラグイン

外部カメラ

映像・音声リソース(出力)

制御制御

REST API

映像リソース(入力)

自分(スマートフォン) 相手(PC/スマートフォンのWebブラウザ)

Webブラウザの仕様に影響されない機器連携によるWebRTCでのビデオチャットを実現

GotAPIフレームワーク

Page 13: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

利用イメージ

Webブラウザ/ネイティブアプリ

デバイスWebAPI

WebRTCプラグイン WebRTC

外部カメラ用プラグイン

スマートグラスVuzix M100

映像・音声リソース(出力)制御制御

REST API

映像リソース(入力)

作業者(スマートフォン)センター

ウェアラブルデバイスを使った遠隔作業支援システム

指示

状況確認

Page 14: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

デモ:仕組みの異なる複数の外部カメラを切り替え

DeviceConnectWebAPI(GotAPI準拠のOSS実装)のGitHubページ:https://github.com/DeviceConnect

指定なし⇒スマホのカメラ映像

カメラAの映像

カメラBの映像URL

カメラAの映像URL

カメラBの映像スマートフォンのWebブラウザ画面

Page 15: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

デモの使い方

※あくまで検証用のデモなので、IDを指定すれば他で同時に使っている方にもそのままつながってしまう点に注意

Android端末に以下のAPKをインストール(詳細手順は次ページ以降)

WebRTCのみ試す場合・dConnectManager.apk:マネージャ(管理)アプリ・dConnectDeviceWebRTC.apk:WebRTCプラグイン

PC用デモサイト(Gclue社Webサイト):http://test.gclue.io/dwa/webrtc/demoSite/index.html※HTTPのサイトなのでChromeブラウザでは動作しない(Chrome 47での変更)

スマホ(Android)用デモサイト(Gclue社Webサイト):http://test.gclue.io/dwa/webrtc/demoSite/videochat.html

外部カメラを利用する場合・dConnectDeviceUVC.apk:Webカメラプラグイン・・・USB Video Class 準拠カメラを利用の場合

・デバイスコネクトがインストールされ外部アクセスが許可された端末(Vuzix M100等)利用手順(ハンズオン資料):http://www.slideshare.net/device-webapi/gotapiweb

・MJPEG配信が可能なNWカメラ(Trek Ai-ball等)

Page 16: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

デモの使い方 STEP:0 下準備

ルータ

パソコンAndroid端末

無線LAN

1.同一ネットワークのパソコンとAndroid端末を用意

デバイスコネクトデモWebサイト(HTML

ファイル)

マネージャアプリプラグイン

次ページ以降で説明次ページ以降で説明

Page 17: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

0.Android端末、PC開発環境の準備1.GitHubからPCにデモ用ファイルのダウンロード

2.「ADB Install」コマンドでマネージャアプリ、Hostプラグイン)をAndroid端末にインストール(ほかに必要なプラグインもAPKファイルからインストールする)

> adb install .¥demoWebSite¥apk¥dConnectManager.apk[改行]Successと出たら成功> adb install .¥demoWebSite¥apk¥dConnectDeviceWebRTC.apk [改行]Successと出たら成功

デモの使い方 STEP:1 ADBを利用したアプリインストール

PC作業

ダウンロードファイル

demoWebSite┣[apk]┃ ┣dConnectManager.apk┃ ┣dConnectDeviceWebRTC.apk┃ ┗その他のAPKファイル┃┣[css]┣[js]┗index.html

https://github.com/DeviceConnect/DeviceConnect-Docs/blob/master/Bin/demoWebSite.zip

Page 18: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

デモの使い方 STEP:2 パソコンから確認する準備

PCから試すために、スマートフォンへの外部からのアクセスを許可する

マネージャーアプリを開いて機能をオフにし、セキュリティ設定の外部IPを有効に

してから機能をオンにする

IPアドレス(ローカルNW)

Android画面

Page 19: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

デモの使い方 STEP:3 PCでデモ用Webサイトを開く

> adb push demoWebSite/sdcard/org.deviceconnect.android.manager/demoWebSite [改行]

補足ChromeブラウザVer.45以降、PC・AndroidともにFileスキーム(file:///)でのデモの動作確認が出来なくなったため、暫定対処としてLocalhost上にWebコンテンツを置けるようにしています

demoWebSite┣[apk] -APKファイル┣[css] -スタイルシート┣[js] -javascript┃┗index.html

1. ダウンロードファイルの中身をadb pushでAndroid端末のストレージにコピー

PCにダウンロードしたファイルのフォルダ

ダウンロードしたZIPファイルをフォルダに展開

Page 20: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

3. Webブラウザで以下のURLを入力して開く"http://[Android端末のIPアドレス]:8080/demoWebSite/index.html?ip=[Android端末のIPアド

レス]#demo"

インストールしたAndroid端末上で開く場合は"http://localhost:8080/demoWebSite/index.html#demo"

操作対象のIPアドレスとしてパラメータを付加

2. マネージャアプリのWebサーバ機能をオンにする

※外部IPの許可とWebサーバ機能はあくまで検証用なので、意図しない端末の操作やデータ参照をされるリスクが伴います。信頼が出来ないローカルネットワーク環境では利用しないでください。

デモの使い方 STEP:3 PCでデモ用Webサイトを開く

Android画面

Page 21: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

デモの使い方 STEP:3 PCでデモ用Webサイトを開く②

1.Firefoxブラウザでは、ダウンロードファイルのindex.htmlを開くだけで確認できる

ダウンロードファイル

demoWebSite┣[apk] -APKファイル┣[css] -スタイルシート┣[js] -javascript┃┗index.html

2.URLの最後に"?ip=[Android端末のIPアドレス]#demo"と追加して移動

PC作業

※ChromeブラウザVer.45以降、PC・AndroidともにFileスキーム(file:///)でのデモの動作確認が出来なくなっております。

Page 22: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

デモの使い方 STEP:4 動作確認:機能リストの表示

1.デモ画面でSearch Deviceを選ぶと確認ダイアログが表示され、[同意する]を選ぶとDevice Listにプラグインが表示される。

2.Android端末の画面で[同意する]を選ぶとデモ画面に機能のリストが表示される

PC画面

Android画面

PC画面

Page 23: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

PC用デモサイト(Gclue社Webサイト)をFirfoxブラウザで開くhttp://test.gclue.io/dwa/webrtc/demoSite/index.html

※HTTPのサイトなのでChromeブラウザでは動作しない(Chrome 47での変更)

スマホ(Android)用デモサイト(Gclue社Webサイト)を開き、スマホの画面に表示される確認ダイアログで[同意する]を選ぶ

http://test.gclue.io/dwa/webrtc/demoSite/videochat.html?=[Android端末のIPアドレス]

PC画面 Android画面

スマホ用デモサイト

デモの使い方 STEP:5 WebRTCデモサイトでの動作確認

Page 24: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

Copyright © 2015 Device WebAPI Consortium. All Rights Reserved.

スマホ用デモサイト

スマホの通話画面

PC用デモサイト

GetListで通話先を見つけて、Callボタンで通話開始

デモの使い方 STEP:5 WebRTCデモサイトでの動作確認

PC用デモサイトかスマホ用デモサイトで通話先を見つけて通話開始

Page 25: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

以下、参考資料

Page 26: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

デバイスWebAPIの仕組み(Androidの場合)

・スマートフォン上で動作する仮想サーバによりIP層を経由することで、Webブラウザからでも高度な機能を実現

・アプリからも同様に利用可能

フレームワーク

ライブラリ

Kernel

デバイス

Android OS

デバイスWebAPI(ネイティブアプリ)

仮想サーバ

IPネットワーク層

Webブラウザ

インターネット上のWebサイト

Webアプリ(HTML5+Javascript)

Webアプリ(HTML5+Javascript)

Webアプリ(HTML5+Javascript)

IP-NW経由

で仮想サーバにアクセス

ネイティブ

アプリとして任意の機能が利用可能

拡張プラグインC拡張プラグインB拡張プラグインA

デバイスアクセス要求を各デバイスの制御命令に変換(プラグインで拡張)

Page 27: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

デバイスWebAPI(機能単位のREST API規定)

デバイスWebAPI(機能単位のREST API規定)

Webのレイヤーで見た場合

Webアプリ(HTML5+Javascript)

Webブラウザ

Webエンジン

デバイス

低レイヤーデバイスAPI規定(JavaScript)

ドライバ/Profile相当

デバイスAPI規定(JavaScript)

ドライバ/Profile

最近のWeb規格化の流れ(Extensible Web)

低レイヤーのドライバ

Webアプリ

Webブラウザ

スクリプトエンジン

Python・Ruby等

ネイティブアプリ

仮想サーバ+REST API I/F(GotAPIでの規定部分)

デバイスWebAPI(機能単位のREST API規定)

低レイヤーのドライバ

ドライバ/Profile

デバイス

ある意味でエンタープライズ開発における最近のアーキテクチャスタイル

(Micro Services)に近い?

一般的なWebアプリ(Webブラウザ)からのデバイス利用、トレンド

デバイスWebAPIでのデバイス利用

ドライバ/Profile相当ドライバ/Profile相当

ドライバ/Profileドライバ/Profile

Page 28: 色々なデバイスの映像を使ったWebブラウザでのWebRTC映像中継(GotAPIからのWebRTC利用)

参考:言葉の解説

デバイスコネクトWebAPINTTドコモが提供するオープンソースソフトウェア(MITライセンス)。 後述のGotAPI準拠の実装という位置づけだが、実用性向上のための拡張や検証のための設定項目あり。

OMA GotAPI (Generic Open Terminal API)OMA(Opne Mobile Alliance:携帯電話の標準化団体)で規格化された、スマートフォン上でWebインターフェースを実現するための技術仕様

OMA Device WebAPIGotAPI仕様はあくまでインターフェースとしての規格で、具体的な機器のAPIは「DeviceWebAPI」として規定される。現在、ヘルスケア、3Dプリンタの規格化が進行中。

デバイスWebAPIコンソーシアム「GotAPI」の普及活動や機能検討を行う団体として設立。

デバイスWebAPIマネージャデバイスコネクトWebAPIをビルドした、各種アプリストアで公開されているAndroid/iOSアプリ(デモ用のWebサイトとセット)。デバイスWebAPIコンソーシアムを通じてGclue社が提供。

GotAPI(規格)

デバイスWebAPI(規格)

OMA(携帯電話の標準化団体)

デバイスWebAPIコンソーシアム

デバイスWebAPIマネージャ

(公開アプリ)

デバイスコネクト(GotAPI実装:ソースコード)