Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014...

40
Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Transcript of Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014...

Page 1: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Video Streaming

dal player standard Androidverso device non

convenzionali

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 2: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Chi siamo?

a.martellucci[at]reply.it@martellux

+AlessandroMartellucci

m.bonifazi[at]reply.it@mbonifazi

+MatteoBonifazi

http://www.reply.eu

http://www.gaiareply.com

Page 3: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

• Reply spa è una delle società leader nel settore IT

• Opera in Italia, Germania, UK, Benelux, USA and Brasile.

• Open Reply è una società del Gruppo Reply spa specializzata su

tecnologie open source, soluzioni web multicanale and

applicazioni mobile.

• Based in Rome, Open Reply’s Android Lab is a young team of

over 20 engineers 100% focused on Android development.

• Specializzati in applicazioni broadcasting, bancarie e

customizzazioni del sistema operativo Android .

Open Reply & Android Lab

Page 4: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

• Ex1 – Streaming di un contenuto su smartphone e tablet

• Ex2 – Streaming con app per

• Ex3 – Divertirsi utilizzando il

Codelab Millestones

Page 5: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Android multimedia framework

• Android supporta diversi tipi di formati per lo streaming di

contenuti

• I file possono essere salvati all’interno dell’applicazione (raw

resources, standalone files) oppure utilizzando servizi di OTT

streaming.

• La documentazione dell’Android multimedia framework copre

soltanto i casi base.

Page 6: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Tipi supportati

HttpLiveStreaming Protocol 3 è supportato da Android 4.0. La migliore implementazione si trova su dispositivi KitKat.

source: http://developer.android.com/guide/appendix/media-formats.html

Page 7: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

//1. Recuperare la viewVideoView myVideoView = (VideoView)findViewById(R.id.myvideoview);

//2. Setup video urlmyVideoView.setVideoURI(Uri.parse(SrcPath));//3. Impostare il video controllermyVideoView.setMediaController(new MediaController(this));

//4. Inizio dello streaming.myVideoView.requestFocus();myVideoView.start();

android.widget.VideoView

MediaPlayer code example

Page 8: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Android TVL’intrattenimento per la nostra sala

Source:http://www.televisedrevolution.com/

Page 9: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Nexus Player

Source:http://www.televisedrevolution.com/

1.8GHz Quad Core, Intel® Atom™

Imagination PowerVR Series 6 Graphics 2D/3D

Engine1GB RAM

8GB storage

Asus device – 235 g

Page 10: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Android TV appcaratteristiche tecniche

• Android TV device hanno Android Lollipop 5.0.

• Android TV possiede la stessa versione del Multimedia Framework dei

normali dispisitvi Android.

• Android TV app sono compatibili dalle API 17.

• Basate sulla libreria Leanback Android Support.

Page 11: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

10 feet experience

Smartphone 5” 320

dp

TV Full HD 30” 320

dpi

3 metri

50 centimetri

Page 12: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Manifest featuresSupportare landscape

Portrait activity sono escluse

Page 13: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Manifest featuresNo touch screen

<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>

Page 14: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Manifest featuresLimit sensor

<uses-feature android:name="android.hardware.sensor.accelerometer”

android:required="false" />

Page 15: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Keep calm and lean back!!

Fornisce componeti built-in customizzati per lo schermo della TV

Page 16: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Leanback support library

<uses-feature android:name="android.software.leanback" android:required="true" /> <application android:allowBackup="false”

android:label="@string/app_name”android:theme="@style/Theme.Leanback" >

<activity android:name="MainActivity”

android:screenOrientation="landscape" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> </intent-filter> </activity>

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 17: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Leanback support libraryModel View Presenter

PresenterModel View

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 18: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Leanback UI componentBroswerFragment

Permette agli sviluppatore di avere un layout della propria applicazione già precostruito e pronto all’uso.

Page 19: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Leanback UI componentDetailFragment

Mostra informazioni riguardo i contenuti selezionati dall’utente.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 20: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Chromecastun cast-ready device per la multi-screen experience

source: www.google.it

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 21: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Chromecastcaratteristiche hardware

source: www.pcworld.com

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 22: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Chromecastcomponenti

• Google Cast• Esperienza Multi-Screen• Google Cast SDK

• Applicazione client• Android app• iOS app• Chrome app

• Applicazione receiver• Default Media Receiver• Styled Media Receiver• Custom Media Receiver

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 23: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

Applicazione client Androidlibrerie e dipendenze

• Versione minima supportata è la 9 (Gingerbread)

• MediaRouter API nel android-support-v7

• Google Play Services

• AppCompat API nel android-support-v7

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Page 24: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Applicazione client Androidtipico flusso di esecuzione

• Client usa MediaRouter per fare il discovery: MediaRouter.addCallback• MediaRouter informa il client della route selezionata:

MediaRouter.Callback.onRouteSelected• Il client recupera l’istanza di CastDevice: CastDevice.getFromBundle• Il client usa GoogleApiClient per collegarsi allo strato di sistema: GoogleApiClient.Builder

• Il client avvia l’applicazione receiver: Cast.CastApi.launchApplication• Il client instaura il canale di comunicazione: Cast.CastApi.setMessageReceivedCallbacks• Il client invia messaggi di protocollo sul canale di trasmissione: Cast.CastApi.sendMessage

source: developers.google.com

Page 25: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Ricerca Cast-Ready Devicecaratteristiche

Remote PlaybackLive Audio Live Video

MediaRouteSelector.Builder mediaRouteSelectorBuilder = new

MediaRouteSelector.Builder();

mediaRouteSelectorBuilder.addControlCategory(MediaControlIntent.CATEGOR

Y_REMOTE_PLAYBACK);

mediaRouteSelectorBuilder.addControlCategory(MediaControlIntent.CATEGOR

Y_LIVE_AUDIO);

mediaRouteSelectorBuilder.addControlCategory(MediaControlIntent.CATEGOR

Y_LIVE_VIDEO);

MediaRouterSelector mediaRouterSelector =

mediaRouterSelectorBuilder.build();

Page 26: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Media Cast Buttonfacile approccio alla ricerca

source: developers.google.com source: developers.google.com

public boolean onCreateOptionsMenu(Menu menu) { MenuItem mediaRouteMenuItem = menu.findItem(R.id.media_route_menu_item); MediaRouteActionProvider mediaRouteActionProvider = (MediaRouteActionProvider) MenuItemCompat.getActionProvider(mediaRouteMenuItem); mediaRouteActionProvider.setRouteSelector(mMediaRouteSelector); …. }

Page 27: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Applicazione Receiverquale mistero?

Che cosa è?Applicazione HTML5 - Javascript

Che cosa fa?Visualizza il contenuto a video

Gestisce i messaggi

Quali tipo esistono?

Default Media Receiver

Styled Media Receiver Custom Media Receiver

Page 28: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Default Media Receiveril più semplice

• Off-the-shelf

• Nessuna personalizzazione

• Nessuna registrazioneSource: developers.google.com

Page 29: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Styled Media Receiversemplice e personalizzabile

• Simile al Default Media Player

• CSS per la personalizzazione

• Registrazione

Source: developers.google.com

Page 30: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Custom Media Receiver (1/3)

qualsiasi cosa

• Web Applicaiton

• Debug(able) at 9222

• Registrazione

Source: developers.google.com

Page 31: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci

Custom Media Receiver (2/3)

esempio

<html> <head>  <title>Example minimum receiver</title> <script src="//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js"></script> </head> <body> <video id='media'/> <script> window.mediaElement = document.getElementById('media'); window.mediaManager = new cast.receiver.MediaManager(window.mediaElement); window.castReceiverManager = cast.receiver.CastReceiverManager.getInstance(); window.castReceiverManager.start(); </script> </body></html>

Page 32: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Custom Media Receiver (3/3)

caratteristiche avanzate

• Video Codification/Decodification• H.264 High Profile Level 4.1, 4.2 and 5• VP8

• Adaptive Bitrate Streaming• HTTP Live Streaming (HLS)• Dynamic Adaptive Streaming over HTTP (MPEG-DASH)• Smooth Streaming

• Digital Rights Management• Play Ready DRM• Widevine DRM

• Media Player Library

Page 33: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Channel, Namespace e Protocol (1/2)

comunicazione

• Protocol: insieme di messaggi• Namespace: nome protocollo• Channel: lo strato di comunicazione

class CustomChannel implements Cast.MessageReceivedCallback {

public String getNamespace() { return “urn:x-cast:com.channel.custom”; }

@Override public void onMessageReceiver(CastDevice castDevice, String namespace, String message) { … }}

… Cast.CastApi.setMessageReceivedCallbacks(mApiClient, mCustomChannel.getNamespace(), mCustomChannel);…

Page 34: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Channel, Namespace e Protocol (2/2)

comunicazione

• Media Namespace: urn:x-cast:com.google.media.cast• RemoteMediaPlayer• MediaManager

RECEIVER MEDIA CHANNEL…

window.mediaManager = new cast.receiver.MediaManager(window.mediaElement);…

CLIENT MEDIA CHANNEL

Cast.CastApi.setMessageReceivedCallbacks(mApiClient,

mRemoteMediaPlayer.getNamespace(), mCustomChannel);…

Page 35: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Google Api Client e Media Route Providermanufacturer

Source: developers.google.com

CastDevice selectedCastDevice = CastDevice.getFromBundle(selectedRouteInfo.getExtras);Cast.CastOptions.Builder apiOptionsBuilder = new Cast.CastOptions.Builder(selectedCastDevice, …);googleApiClient = new GoogleApiClient.Builder().addApi(Cast.API, apiOptionsBuilder.build()).build();googleApiClient.connect();

Cast.CastApi.launchApplication(googleApiClient, applicationId, launchOptions);Cast.CastApi.joinApplication(googleApiClient);Cast.CastApi.stopApplication(googleApiClient);Cast.CastApi.leaveApplication(googleApiClient);

Page 36: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

RemoteMediaPlayer…finalmente

MediaInfo mediaInfo = new MediaInfo.Builder("http://your.server.com/video.mp4")

.setContentType("video/mp4")

.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)

.setMetadata(mediaMetadata)

.build();

…mRemoteMediaPlayer = new RemoteMediaPlayer();mRemoteMediaPlayer.load(mApiClient, mediaInfo, true);…

Page 37: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Buona visione

Source: www.huffingtonpost.ca

Grazie a tutti

Page 38: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Risorse

• Google Cast -> https://developers.google.com/cast

• Chromecast App -> http://www.google.it/chrome/devices/chromecast/apps.html

• Google Cast Downloads -> https://developers.google.com/cast/docs/downloads

• Github -> https://github.com/googlecast

• Android TV -> https://developer.android.com/tv

• Nvidia Guideline -> https://developer.nvidia.com/android-tv-developer-guide

• Github -> https://github.com/googlesamples/androidtv-Leanback.git

• Android Mediaplayer-> http://developer.android.com/guide/topics/media/mediaplayer.html

• ExoPlayer -> https://github.com/google/ExoPlayer

Page 39: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Libro

Sviluppare applicazioni Android

in sette giornihttps://androidinsettegiorni.wordpress.com/

Page 40: Video Streaming dal player standard Android verso device non convenzionali GDG Fest Roma – 2014 – Matteo Bonifazi & Alessandro Martellucci.

GDG Fest Roma– 2014 – Matteo Bonifazi & Alessandro Martellucci

Contatti

a.martellucci[at]reply.it@martellux

+AlessandroMartellucci

m.bonifazi[at]reply.it@mbonifazi

+MatteoBonifazi

http://www.reply.eu

http://www.gaiareply.com