Best Practices per l`encoding video e il delivery su Mobile

Transcript

Best Practices per l`encoding video e il delivery su Mobile
Best Practices per l’encoding video e il delivery su Mobile
Fabio Sonnati – Maggio 2011
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Speaker bio – Fabio Sonnati
TWITTTER: @sonnati
Fabio Sonnati - Freelance, Adobe Community Professional dal 2006,
sviluppatore e beta tester di Flash Media Server dal 2003. Ho una specifica
esperienza nella progettazione, sviluppo ed ottimizzazione di piattaforme di
erogazione video e di encoding.
Blog: http://sonnati.wordpress.com
Twitter: @sonnati
Email: [email protected]
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
2
Premessa: il video ha cambiato il web
Il video ha cambiato il modo di comunicare su Internet. E’ stato uno
dei principali protagonisti del web negli ultimi 5 anni, da YouTube in
poi.
“driver” fondamentale di tale trend è stato l’ Adobe Flash Player :
pluging onnipresente, cross-platform, immediato e programmabile
ha reso facilmente accessibile al 98-99% dell’Internet audience
contenuti video annullando le barriere di accesso precedenti.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
PARTE I - Ecosistema video di Adobe
Lo “Status Quo”
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Breve cronistoria del video sul web
1998-2005 – Il video su Internet esiste fin dagli albori ma resta ai
margini per carenza di connessioni veloci, di codec efficienti, di
tecnologie realmente “abilitanti” e per la guerra tra i tre maggiori
player del mercato: Microsoft, Apple e Real Networks.
2005-6 – YouTube, sfruttando il Flash Player 7 come tecnologia
abilitante, inaugura il nuovo trend del video su Internet.
Il video ha livelli di qualità non elevati ma la totale facilità di
accesso, i modelli on-demand e “user generated content”
determinano una reale esplosione di consenso da parte degli
Internauti.
2007-8 – Adobe rilascia il Flash Player 9 update 3 con supporto alle
tecnologie H.264 e AAC. Lo “stato dell’arte” nella campo della
codifica audio video arriva sul 98% dei desktop.
2009-10 – Viene rilasciato Flash player 10 che segna la maturità per la
piattaforma video di Adobe su desktop. Inizia la strategia cross platform.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
10 Generazioni di Innovazione con Flash
Flash 6
Viene introdotto il codec video Spark per lo streaming da FCS
Flash 7
Progressive downloading
Flash 8
Codec video VP6
Flash 9 update 3
Codec video H.264, codec audio AAC
Flash 10
p2p, accelerazione video, DRM, speex, dynamic streaming
Flash 10.1 e successivi (Desktop + Mobile)
HTTP dynamic streaming, StageVideo, Echo cancellation,
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
ECOSISTEMA VIDEO ADOBE
Gli elementi dell’ecosistema:
-
Flash Player/AIR (Browser, Desktop, Mobile, Connected TV)
CS 5.5 Media Encoder (Desktop encoder)
FMES (Batch encoder)
Flash Media Live Encoder 3.5 (live encoder)
Flash Media Server 4 (streaming server, communication server)
Flash Access 2 (DRM)
Cirrus and LCCS (Services)
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Penetrazione della piattaforma Flash su Desktop
L’Adoption rate delle nuove release del Flash Player è in continua
ascesa. Una nuova release supera l’80% di diffusione in pochi mesi.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Penetrazione della piattaforma Flash su Mobile
Nel 2011 sono previsti oltre 40 modelli di smartphones con supporto al
Flash Player i quali costituiranno una base di 132 Milioni di device
(36% del totale smart phones venduti). Se consideriamo Flash o AIR
su telefoni o tablet si sale a 200 Milioni di device.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flash Player e AIR su Mobile
Flash Player e AIR sono disponibili oggi su:
• Android dalla release 2.2 in poi
• WebOS di HP
• QNX (Playbook) di RIM
Le applicazioni AIR possono essere cross-compilate per funzionare anche sui
dispositivi iOS come applicazioni native. Nessun supporto al Flash Player
nel browser.
(ricordiamo infine che Flash e AIR sono disponibili anche su GoogleTV e tutte
le SmartTV e lettori Bluray 2011 di Samsung)
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Flash Player e AIR su Mobile
ANDROID
Supporto molto esteso alle funzioni di AIR 2.6 con alcuni distinguo:
Full HW acceleration abilitata solo su Android 3.1 (StageVideo)
Il supporto a Access 2.0 arriverà nel corso dell’estate. Accesso alla sola
fotocamera dorsale come sorgente di streaming.
PLAYBOOK
Eccellente livello di supporto delle funzioni audio video. Streaming 720p
e 1080p senza problemi.
iOS
Alcune limitazioni a partire dal mancato supporto ai codec H.264 e AAC
In attesa di AIR 2.7 per un netto incremento delle performance generali.
Limitazioni superabili in parte utilizzando StageWebView.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
PARTE II – Encoding Best Practices
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Tecnologia video H.264
H.264 è lo stato dell’arte della codifica video.
Standard internazionale, è ampiamente supportato dall’industria
(BlueRay disk, HD Broadcasting, Mobile Video, HD Camcorder).
H.264 è un codec complesso, con prestazioni superiori a WMV, VP6,
DivX o codec più moderni come il VC1 o il VP8. Ha grandi potenzialità
di miglioramento e ancora non è sfruttato al 100%.
H.264 nasce come codec unico per una molteplicità di scenari, dal
mobile al broadcasting full-hd. Dalla video conferenza al vod passando
per il web streaming.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Principi di compressione video
La codifica video viene genericamente cosi’ eseguita:
• Il frame viene diviso in blocchi (tipicamente 8x8).
• Ad ogni blocco viene applicato un modello psico-visuale per cui
ai dettagli più fini (alte frequenze) viene applicata una
quantizzazione meno accurata.
• Le ridondanze spaziali vengono predette dai blocchi adiacenti
(spatial prediction).
• Le ridondanze temporali vengono ridotte tramite la “motion
estimation e compensation” cosi’ che solo le differenze rispetto
ad un fotogramma di riferimento vengono codificate.
• Viene applicata una codifica entropica al bitstream per
comprimerlo ulteriormente (VLC, variable length coding).
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Tipologie di frame video
I-frames
Vengono codificati solo usando tecniche Intra-frame. Gli I-frame non hanno
riferimenti ad altri fotogrammi e sono quindi utilizzati come punti di accesso
(Keyframes).
P-frames
Vengono predetti dai precedenti reference frames utilizzando tecniche di
motion estimation and compensation (Inter-frames).
Hanno riferimenti ad altri frame quindi formano una catena di dipendenze.
B-frames
Sono fotogrammi i cui blocchi vengono interpolati
fra un riferimento nel passato ed uno nel futuro.
Determinano una compressione molto efficiente.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Lo standard H.264
H.264 utilizza moltissime tecniche evolute di
compressione rispetto agli standard precedenti
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Blocchi 4x4 e/o 8x8
Diverse modalità di predizione spaziale
Reference Frames multipli
motion compensation accurata
B-Frame molto efficienti
Deblocking filter
Context-adaptive entropy coding (CABAC)
Lo standard H.264
Codec “Profiles”
Il profilo H.264 determina il sottoinsieme di tecniche di encoding
utilizzabili dall’encoder e dal decoder. I profili più semplici richiedono
minore CPU e memoria ma sono meno efficienti in termini di rapporto
qualità / banda.
Baseline Profile (BP): Profilo dedicato a dispositivi mobile a bassa
potenza di elaborazione (Non supporta i B-Frames, il CABAC e i
blocchi 8x8)
Main Profile (MP): Originariamente inteso come profilo generico per
dispositivi video mainstream, ha perso progressivamente importanza
rispetto all’ High profile.
High Profile (HiP): Profilo nato per le esigenze del broadcasting HD e
FullHD, è usato nel BluRay e nel digitale satellitare e terrestre HD.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Lo standard H.264
Codec “Levels”
Il livello definisce la massima risoluzione dei frame, la massima
memoria richiesta per la decodifica, il massimo numero di reference e il
massimo bitrate. Il livello è molto importante per la compatibilità con i
device mobili. Tipicamente il profilo baseline è usato con livello fino a
3.1, il main profile con livello fino a 4.1 e l’ high profile con livello fino a
5.1
La buona notizia è che il decoder software di H.264 incluso nel Flash
supporta ogni profilo e ogni livello. Tuttavia sui dispositivi mobile è
importante assicurarsi di sfruttare l’accelerazione HW.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
HW Acceleration sui dispositivi Mobile
Tipologie di accelerazione HW
1. Accelerazione HW della sola decodifica
2. Accelerazione HW della decodifica, dello scaling e del compositing
Playbook : accelerazione più avanzata su ogni livello e profilo fino a
risoluzioni FullHD
Android 2.2, 2.3 e 3.0 : sola la prima forma
Android 3.1 : la forma più completa (StageVideo)
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
HW Acceleration sui dispositivi Mobile
Conseguenza:
Per garantire le migliori performance anche su dispositivi Android entrylevel e per supportare altri dispositivi con la stessa codifica (iOS più
vecchi, BlackBerry, Simbian) è consigliabile codificare in Baseline
Level 3.0
Risoluzione consigliate:
Mobile phone
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Tablet
HW Acceleration sui dispositivi Mobile
Esempio di settings CS 5.5 Media Encoder
Video settings
Format – multiplexing: F4V
Video – resolution (depends):
For 16:9 content: 640 × 360
For 4:3 content: 640 × 480
Frames per second (fps): Same as source footage
Profile: Baseline
Level: 3.0 or 3.1 (two to three reference frames will be used)
Bit rate: VBR, two-pass
Target bit rate: 350–600 kbit/sec. depending on video "complexity"
Maximum bit rate: (1.5 to 1.6) × target bit rate
Keyframe (depends): For progressive downloading: fps × (3 to 4)
Audio settings
Codec: AAC, stereo
Frequency: 44.1 kHz
Audio quality: High
Bit rate: 80 kbit/sec.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
PARTE III – Delivery Best Practices
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Delivery best practices
Quale tecnica di erogazione ?
Flash Player supporta molte tecniche di erogazione differenti:
Progressive Download
RTMP Streaming
RTMP Dynamic Streaming
HTTP Dynamic Streaming
Peer Assisted Streaming
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Delivery best practices
Quale Player Video ?
Custom (low level Flash Player API)
OSMF (Framework)
Strobe or Flash Media Player (turn-key
solutions)
Raccomandazioni generiche
Utilizzate un rapporto di 16:10 per il player
Non utilizzare wmode = trasparent
Usare StageVideo, se disponibile
Usare Dynamic Streaming per migliorare la QoS
Fare device detection e modificare skin (pulsanti
grandi per il touch) e scelta delle risoluzioni / bitrate
in base al device.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Delivery best practice
Raccomandazioni per i player custom o skinnati
- Evitare video con filtri, rotazioni, blending, trasparenza, pixel bender
- Posizionate i video su pixel esatti
- Limitare effetti e trasparenze sugli elementi della UI
- Preferire callback agli eventi e centralizzare i timer
- Determinare se siamo su mobile usando varie tecniche
-
If (Capabilities.cpuArchitecture == “ARM” ) … siamo su CPU Arm
-
If (Capabilities.version.indexOf(“AND”) != -1 … siamo su Android
-
Determinare la dimensione della diagonale:
-
var dpi:Number = Capabilities.screenDPI;
var screenX:Number = Capabilities.screenResolutionX;
var screenY:Number = Capabilities.screenResolutionY;
var screenDiagonal:Number = Math.sqrt(((screenX*screenX)+(screenY*screenY))) / dpi;
-
Quindi definire una UI dedicata al Touch e ai dispositivi con
display piccoli.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Dynamic Streaming
Come massimizzare la QoS ?
Usare RTMP & HTTP Dynamic Streaming
FP10 può cambiare bitrate al volo per adattarsi ai cambiamenti di banda
disponibile
FP10.1 offre un API per il QoS che fornisce moltissime dettagliate informazioni
sulle prestazioni in decodifica del player, sulla banda disponibile e quella
richiesta istantaneamente dal flusso video. Grazie a queste info è possibile
attivare il cambio di bitrate che sarà trasparente per l’utente.
La DynamicStream class o meglio l’ OSMF implementa tutta la complessa
euristica necessaria per gestire il bitrate switching in base alla banda
disponibile, la dimensinone dello schermo la potenza della CPU.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Dynamic Streaming
Dynamic Streaming – encoding recommendations
Use fixed length GOP (2-4 seconds)
Use 2-pass CBR (or “light” VBR es: VBV buffer = gop length)
Use same audio settings for each stream
Find a balanced set of resolutions - bitrates
Desktop 16:9
Resolution
Multiscreen 16:9
Bitrate
Resolution
1280 x 720
1-2 Mbit/s
1024 x 576
0.8-1.5 Mbit/s
848 x 480
0.6-1 Mbit/s
Resolution
640 x 360
0.4-0.7 Mbit/s
[email protected]
[email protected]
Bitrate
1280 x 720
1-2 Mbit/s
1024 x 576
0.8-1.5 Mbit/s
Bitrate
848 x 480
0.6-1 Mbit/s
640 x 360
0.5-0.8 Mbit/s
640 x 360
0.5-0.8 Mbit/s
512 x 288
0.4-0.6 Mbit/s
512 x 288
0.4-0.6 Mbit/s
480 x 272
0.3-0.4 Mbit/s
480 x 272
0.3-0.4 Mbit/s
320 x 180
0.2-0.3 Mbit/s
320 x 180
0.2-0.3 Mbit/s
Mobile 16:9
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Applicazioni video in AIR su iOS
E’ possibile sopperire alle limitazioni del
packager per iOS utilizzando funzioni native
tramite l’oggetto StageWebView e codice
HTML5 embeddato nel package.
Con il progetto StageWebViewBridge è infine
possibile gestire una comunicazione
bidirezionale con il contenuto dello
StageWebView.
var webView = new StageWebView();
webView.stage = this.stage;
webView.viewPort = new Rectangle( 0, 0, stage.stageWidth, stage.stageHeight);
var path:String = new File(new File("app:/html/service.htm").nativePath).url;
webView.loadURL(Path);
* http://code.google.com/p/stagewebviewbridge/wiki/Communication
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Thank you
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
© 2011 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.