33
HTML5 VIDEO on Chromecast HTML5 VIDEO(Smooth Streaming) について調べてみた

HTML5 VIDEO on Chromecast

Embed Size (px)

DESCRIPTION

HTML5 VIDEO (Smooth Streaming) on Chromecast について調べてみた

Citation preview

Page 1: HTML5 VIDEO on Chromecast

HTML5 VIDEOon Chromecast

HTML5 VIDEO(Smooth Streaming) について調べてみた

Page 2: HTML5 VIDEO on Chromecast

About me

Katsumi Onishi

(@KatzMii)

Android Developer

HTML5 Beginner

動画配信サービスでMicrosoft Smooth StreamingのChromecast対応の調査中

Page 3: HTML5 VIDEO on Chromecast

Chromecast

• 2013/7 Googleから発売されたドングルデバイス

• TV接続するHDMIスティック

• Android/iPhone/iPad/PCから、動画・音楽をテレビ画面で再生することが出来る。

Page 4: HTML5 VIDEO on Chromecast

対応しているサービス

• Google Play (Movie/Music)

• YouTube

• Netflix

• Hulu

• Pandora

Page 5: HTML5 VIDEO on Chromecast

Supported Media Types

Video H.264 High Profile Level 4.1, 4.2 and 5, VP8

Audio HE-AAC, LC-AAC, CELT/Opus, MP3, Vorbis

ContainerMP4/CENC, WebM, MPEG-DASH,

SmoothStreaming非対応:HTTP Live Streaming

DRM Widevine, PlayReady

Subtitle TTML - Timed Text Markup LanguageWebVTT - Web Video Text Tracks

Page 6: HTML5 VIDEO on Chromecast

Casting Your Content to the Big Screen

Sender Receiver

Page 7: HTML5 VIDEO on Chromecast

Sender and Receiver

Sender ReceiverDiscovery

DIAL - UPnPに定義されているSSDPに基づいたディスカバー&ランチのプロトコル - http://www.dial-multiscreen.org/RAMP - GoogleCast用のメッセージ送受信プロトコル (on WebSocket) - https://github.com/dz0ny/leapcast/wiki/RAMP-protocol

Launch

Connection

receiver application

running

sender application

(HTML5)

LoadMedia

Play/Pause/Volume/Muted

status

DIAL

RAMPWebSocket

Page 8: HTML5 VIDEO on Chromecast

Sender(Android)はライブラリを色々設定しなければならないので少し手間が掛かるが、Receiver(HTML5)は、HTMLファイル1つだけ

First Sample Application Build and Launch

https://github.com/googlecast/cast-android-sample

MP4は簡単に再生!

Page 9: HTML5 VIDEO on Chromecast

Sender Application

~ 省略 ~

Page 10: HTML5 VIDEO on Chromecast

Receiver Application

1.Receiver

2.RAMP

3.Channel

4.bind <video>

Page 11: HTML5 VIDEO on Chromecast

Google Cast Receiver API

• cast.receiver.Channel• cast.receiver.ChannelFactory• cast.receiver.ChannelFactoryEvent• cast.receiver.ChannelHandler• cast.receiver.ConnectionService• cast.receiver.MessageEvent• cast.receiver.Platform• cast.receiver.Receiver• cast.receiver.RemoteMedia

Page 12: HTML5 VIDEO on Chromecast

Google Cast Receiver API

• cast.receiver.Channel• cast.receiver.ChannelFactory• cast.receiver.ChannelFactoryEvent• cast.receiver.ChannelHandler• cast.receiver.ConnectionService• cast.receiver.MessageEvent• cast.receiver.Platform• cast.receiver.Receiver• cast.receiver.RemoteMedia

これだけ?

Page 13: HTML5 VIDEO on Chromecast

Google Cast Receiver API

• cast.receiver.Channel• cast.receiver.ChannelFactory• cast.receiver.ChannelFactoryEvent• cast.receiver.ChannelHandler• cast.receiver.ConnectionService• cast.receiver.MessageEvent• cast.receiver.Platform• cast.receiver.Receiver• cast.receiver.RemoteMedia

これだけ?

通信系ばかり

Page 14: HTML5 VIDEO on Chromecast

Google Cast Receiver API

• cast.receiver.Channel• cast.receiver.ChannelFactory• cast.receiver.ChannelFactoryEvent• cast.receiver.ChannelHandler• cast.receiver.ConnectionService• cast.receiver.MessageEvent• cast.receiver.Platform• cast.receiver.Receiver• cast.receiver.RemoteMedia

これだけ?

通信系ばかり

Adaptiveは?

Page 15: HTML5 VIDEO on Chromecast

Google Cast Receiver API

• cast.receiver.Channel• cast.receiver.ChannelFactory• cast.receiver.ChannelFactoryEvent• cast.receiver.ChannelHandler• cast.receiver.ConnectionService• cast.receiver.MessageEvent• cast.receiver.Platform• cast.receiver.Receiver• cast.receiver.RemoteMedia

これだけ?

通信系ばかり

DRMは?

Adaptiveは?

Page 16: HTML5 VIDEO on Chromecast

Support or Group ....

Page 17: HTML5 VIDEO on Chromecast

Google Goolge Google

Page 18: HTML5 VIDEO on Chromecast

Google Goolge Google

EME

Page 19: HTML5 VIDEO on Chromecast

Google Goolge Google

EME CDM

Page 20: HTML5 VIDEO on Chromecast

Google Goolge Google

EME CDM MSE

Page 21: HTML5 VIDEO on Chromecast

Google Goolge Google

EME CDM MSE

WTF

Page 22: HTML5 VIDEO on Chromecast

Google Goolge Google

EME CDM MSE

WTF

Google, Microsoft and Netflix in W3C

Page 23: HTML5 VIDEO on Chromecast

Extends HTMLMediaElement

• Media Source Extensions (MSE)

• アダプティブ ストリーミングのサポートの定義

• Encrypted Media Extensions (EME)

• コンテンツ保護システムをサポートするため定義• CDMへアクセスする為のAPI定義

• Content Decryption Model (CDM)

• コンテンツ暗号解除モジュール• 実装はプラットフォーム側

Page 24: HTML5 VIDEO on Chromecast

Encrypted Media Extensions - W3C

Page 25: HTML5 VIDEO on Chromecast

dash.js

• dash.js - http://dashif.org/reference/players/javascript/index.html

• MPEG-DASHの Media Source Extensions API のJavaScript ライブラリ• Microsoft Smooth Streaming 対応?

• MPEG-DASH(Dynamic Adaptive Streaming over HTTP)

• HTTPプロトコルを使った動画配信プロトコルの国際標準規格

http://dashif.org/

Page 26: HTML5 VIDEO on Chromecast

Receiver Application

1.Receiver

2.Custom MessageStream

3.Channel

Page 27: HTML5 VIDEO on Chromecast

Message 処理

2.Custom MessageStream

Event Bind

Page 28: HTML5 VIDEO on Chromecast

Format?

Format URL strings

MPEG DASH (live profile) /Manifest(format=mpd-time-csf) OK

Smooth Streaming /Manifest NG

Windows Azure Media Services 側で対応が必要?

Page 29: HTML5 VIDEO on Chromecast

DRM - EME/CDM

Developer Programs Engineer for Chromecast

Page 30: HTML5 VIDEO on Chromecast

DRM - EME/CDM

スクラッチ!?

Developer Programs Engineer for Chromecast

Page 31: HTML5 VIDEO on Chromecast

中間 まとめ

• Chromecast(HTML5)上でアダプティブ ストリーミングをするには、dash.jsを使用する必要がある。

• MPEG-DASHがSmooth Streaming包括してるのか調査が必要

• EMEはサポートされているので、CDMを使用して復号化の仕組みは作れるぽい。スクラッチでね♥

Page 32: HTML5 VIDEO on Chromecast

つづく...!!

Page 33: HTML5 VIDEO on Chromecast

参考• Casting Your Content to the Big Screen - Google Cast — Google Developers https://developers.google.com/

cast/

• Stack Overflow http://stackoverflow.com/questions/tagged/chromecast

• Stack Overflow http://stackoverflow.com/questions/tagged/google-cast

• EME・DRMの行方 - http://furoshiki.hatenadiary.jp/entry/2013/06/07/040209

• HTML5でDRMってアリなの? - https://www.slideshare.net/otachan/html5drm

• DRM in HTML5 - https://luv.asn.au/files/20130604-drm_in_html.pdf

• DRM in HTML5 | The Beautiful, Tormented Machine http://manu.sporny.org/2013/drm-in-html5/

• EME WTF?: An introduction to Encrypted Media Extensions - HTML5 Rocks http://www.html5rocks.com/en/tutorials/eme/basics/

• Microsoft PlayReady DRM を使った Web ブラウザーでの Encrypted Media Extensions のサポート (Windows)

http://msdn.microsoft.com/ja-jp/library/windows/apps/dn466732.aspx

• The Netflix Tech Blog: HTML5 Video at Netflix http://techblog.netflix.com/2013/04/html5-video-at-netflix.html

• MPEG-DASH http://dashif.org/

• DASH-264 JavaScript Reference Client Landing Page http://dashif.org/reference/players/javascript/index.html

• Dash-Industry-Forum/dash.js Wiki https://github.com/Dash-Industry-Forum/dash.js/wiki

• Media Source Extensions http://www.w3.org/TR/media-source/

• Encrypted Media Extensions http://www.w3.org/TR/encrypted-media/