DASH Scaling Live OTT with - Mile High Video...
Transcript of DASH Scaling Live OTT with - Mile High Video...
![Page 1: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/1.jpg)
Scaling Live OTT with DASH
Techniques and Lessons Learned
1
![Page 2: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/2.jpg)
ZACHARYCAVA
Scaling Live OTT with DASH
2
Video Platform Architect
![Page 3: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/3.jpg)
Table of Contents
3
• Background• LIVE Streaming with DASH
• Optimizing for Scale
• Q&A
3
![Page 4: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/4.jpg)
Background
Scaling Live OTT with DASH
4
![Page 5: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/5.jpg)
5
Hulu + Live TVBACKGROUND
● Launched May 3rd 2017
○ Local Live Channels
○ Personal DVR
○ Includes Full Hulu Library
● Technical Points
○ 1000+ Live Streams Ingested
○ 3 Signal Acquisition / Encoding
Vendors
○ In-House Packaging and Origin
![Page 6: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/6.jpg)
6
Device LandscapeBACKGROUND
WEB MOBILELIVING ROOM
80%
![Page 7: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/7.jpg)
LIVE Streaming with DASH
Scaling Live OTT with DASH
7
![Page 8: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/8.jpg)
8
The Timing ModelLIVE STREAMING WITH DASH
● Well Defined Timing Model
○ Synchronized to Real Time Clock
○ Explicit Segment Availability
● Declarative Timing Control
○ DVR Buffering Window
○ Presentation Delay
● Presentation Updates
○ Basic Simple Polling
○ Advanced In-Segment Signalling
![Page 9: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/9.jpg)
<SegmentTemplate timescale="90000" presentationTimeOffset="3054136803" media="STREAM/video/$Time$.m4s" initialization="STREAM/init/video.mp4"> <SegmentTimeline> <S t="3054139806" d="360360"/> <S t="3054500166" d="360360"/> <S t="3054860526" d="360360"/> <S t="3055220886" d="360360"/> <S t="3055581246" d="360360"/> <S t="3055941606" d="360360"/> <S t="3056301966" d="360360"/> <S t="3056662326" d="360360"/> <S t="3057022686" d="360360"/> <S t="3057383046" d="360360"/> <S t="3057743406" d="360360"/> </SegmentTimeline></SegmentTemplate>
9
Segment AddressingLIVE STREAMING WITH DASH
● Templatized Segment Addressing
○ $Number$ or $Time$
● Optional Explicit Addressing
○ Individual segment entries
○ Fully represents missing segments
● Deployed $Time$ with Timeline
○ Artifact of stateless ingest system
○ Re-evaluating for Low Latency
![Page 10: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/10.jpg)
<Period id="1" start="..."> <BaseURL serviceLocation="cdn-1">...</BaseURL> <BaseURL serviceLocation="cdn-2">...</BaseURL> <BaseURL serviceLocation="cdn-3">...</BaseURL> ...</Period>
10
Multi-CDN EnablementLIVE STREAMING WITH DASH
● Multiple BaseURL Elements
○ One per CDN
○ Client has ability to choose source
○ Switching enabled by ABR
● Segment Authentication Complicated
○ No common auth scheme
○ Must add token per CDN
○ ExtUrlQueryInfo used to abstract
manifest from tokens
![Page 11: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/11.jpg)
11
Basic Manifest ExampleLIVE STREAMING WITH DASH
● Let’s look at a 5 minute manifest
● Live Streaming Details
○ Multi-Period
○ 8 Video Representations
○ 1 Audio Representation
○ CEA-608/708 Captions
○ 3 Segment CDNs
![Page 12: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/12.jpg)
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" availabilityStartTime="2017-05-01T07:00:00+00:00" ...> <Period id="1" start="PT70406325.063S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" maxWidth="1280" maxHeight="720" maxFrameRate="60000/1001"> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <Representation id="VIDEO_7" codecs="avc1.4d400d" width="352" height="198" startWithSAP="1" bandwidth="474092" frameRate="30000/1001"> <SegmentTemplate timescale="90000" presentationTimeOffset="3054136803" media="CNN/VIDEO_7/$Time$.m4s" initialization="CNN/init/VIDEO_7.mp4"> <SegmentTimeline> <S t="3054139806" d="360360"/>
12
5 Minute Manifest (1 of ?)LIVE STREAMING WITH DASH
![Page 13: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/13.jpg)
<S t="3054500166" d="360360"/> <S t="3054860526" d="360360"/> <S t="3055220886" d="360360"/> <S t="3055581246" d="360360"/> <S t="3055941606" d="360360"/> <S t="3056301966" d="360360"/> <S t="3056662326" d="360360"/> <S t="3057022686" d="360360"/> <S t="3057383046" d="360360"/> <S t="3057743406" d="360360"/> <S t="3058103766" d="360360"/> <S t="3058464126" d="360360"/> <S t="3058824486" d="360360"/> <S t="3059184846" d="360360"/> <S t="3059545206" d="360360"/> <S t="3059905566" d="360360"/> <S t="3060265926" d="360360"/> <S t="3060626286" d="360360"/> <S t="3060986646" d="360360"/> <S t="3061347006" d="360360"/> <S t="3061707366" d="360360"/>
13
5 Minute Manifest (2 of ?)LIVE STREAMING WITH DASH
![Page 14: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/14.jpg)
<S t="3062067726" d="360360"/> <S t="3062428086" d="360360"/> <S t="3062788446" d="360360"/> <S t="3063148806" d="360360"/> <S t="3063509166" d="360360"/> <S t="3063869526" d="360360"/> <S t="3064229886" d="360360"/> <S t="3064590246" d="360360"/> <S t="3064950606" d="360360"/> <S t="3065310966" d="360360"/> <S t="3065671326" d="360360"/> <S t="3066031686" d="360360"/> <S t="3066392046" d="360360"/> <S t="3066752406" d="360360"/> <S t="3067112766" d="360360"/> <S t="3067473126" d="360360"/> <S t="3067833486" d="360360"/> <S t="3068193846" d="360360"/> <S t="3068554206" d="360360"/> <S t="3068914566" d="360360"/> <S t="3069274926" d="360360"/>
14
5 Minute Manifest (3 of ?)LIVE STREAMING WITH DASH
![Page 15: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/15.jpg)
<S t="3069635286" d="360360"/> <S t="3069995646" d="360360"/> <S t="3070356006" d="360360"/> <S t="3070716366" d="360360"/> <S t="3071076726" d="360360"/> <S t="3071437086" d="360360"/> <S t="3071797446" d="360360"/> <S t="3072157806" d="360360"/> <S t="3072518166" d="360360"/> <S t="3072878526" d="360360"/> <S t="3073238886" d="360360"/> <S t="3073599246" d="360360"/> <S t="3073959606" d="360360"/> <S t="3074319966" d="360360"/> <S t="3074680326" d="360360"/> <S t="3075040686" d="360360"/> <S t="3075401046" d="360360"/> <S t="3075761406" d="360360"/> <S t="3076121766" d="360360"/> <S t="3076482126" d="360360"/> <S t="3076842486" d="360360"/>
15
5 Minute Manifest (4 of ?)LIVE STREAMING WITH DASH
![Page 16: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/16.jpg)
<S t="3077202846" d="360360"/> <S t="3077563206" d="360360"/> <S t="3077923566" d="360360"/> <S t="3078283926" d="360360"/> <S t="3078644286" d="360360"/> <S t="3079004646" d="360360"/> <S t="3079365006" d="360360"/> <S t="3079725366" d="360360"/> </SegmentTimeline> </SegmentTemplate> </Representation> <Representation id="VIDEO_6" codecs="avc1.4d400d" width="384" height="216" startWithSAP="1" bandwidth="741797" frameRate="30000/1001"> <SegmentTemplate timescale="90000" presentationTimeOffset="3054136803" media="CNN/VIDEO_6/$Time$.m4s" initialization="CNN/init/VIDEO_6.mp4"> <SegmentTimeline> <S t="3054139806" d="360360"/> <S t="3054500166" d="360360"/> <S t="3054860526" d="360360"/> <S t="3055220886" d="360360"/>
16
5 Minute Manifest (5 of ?)LIVE STREAMING WITH DASH
![Page 17: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/17.jpg)
17
5 Minute Manifest (5 of ?)LIVE STREAMING WITH DASH
![Page 18: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/18.jpg)
<S t="3074681608" d="360960"/> <S t="3075042568" d="359040"/> <S t="3075401608" d="360960"/> <S t="3075762568" d="360960"/> <S t="3076123528" d="359040"/> <S t="3076482568" d="360960"/> <S t="3076843528" d="360960"/> <S t="3077204488" d="359040"/> <S t="3077563528" d="360960"/> <S t="3077924488" d="360960"/> <S t="3078285448" d="359040"/> <S t="3078644488" d="360960"/> <S t="3079005448" d="360960"/> <S t="3079366408" d="359040"/> <S t="3079725448" d="360960"/> </SegmentTimeline> </SegmentTemplate> </Representation> </AdaptationSet> </Period></MPD>
18
5 Minute Manifest (36 of 36)LIVE STREAMING WITH DASH
![Page 19: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/19.jpg)
19
Only 5 Minutes of ContentLIVE STREAMING WITH DASH
● By The Numbers
○ 694 XML Nodes
○ 46KB Uncompressed Size
○ ~30ms Parse Time
● Simply Does Not Scale
○ 1 hour => 8665 Nodes, 573KB
○ 3 hours => 26512 Nodes, 1.9MB
● What Makes The Manifest So Big?
○ Explicit segment addressing
○ Usage of multiple periods
![Page 20: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/20.jpg)
Optimizing for Scale
Scaling Live OTT with DASH
20
![Page 21: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/21.jpg)
21
Focusing OptimizationsOPTIMIZING FOR SCALE
● Concurrency Is The Challenge
○ Clients constantly polling
○ Need highly cacheable responses
○ Avoid sacrificing quality for scale
● Optimize For Network and Clients
○ Ensure high cache hit ratio
○ Minimize cost of updates for clients
○ Service resources aren’t endless
● Important To Optimize Wholistically
![Page 22: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/22.jpg)
<SegmentTemplate timescale="90000" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.m4s" ...> <SegmentTimeline> <S t="3054860526" d="360360" r="71"/> <S d="270270" /> </SegmentTimeline> <Representation id="VIDEO_7" .../> <Representation id="VIDEO_6" .../> <Representation id="VIDEO_5" .../> <Representation id="VIDEO_4" .../> <Representation id="VIDEO_3" .../> <Representation id="VIDEO_2" .../> <Representation id="VIDEO_1" .../> <Representation id="VIDEO_0" .../></SegmentTemplate>
22
Compress the TimelinesOPTIMIZING FOR SCALE
● Utilize S@r Attribute
○ Collapse repeated durations
○ Not effective on “patterned” durations
● Omit S@t for Consecutive Segments
○ Only necessary for start and gaps
● One Timeline per AdaptationSet
○ Segments are time aligned anyways
○ $RepresentationID$ template
○ Representation timescales must match
![Page 23: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/23.jpg)
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minBufferTime="PT1.0S" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" ...> <Period id="1" start="PT70406333.088S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" ...> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054860526" d="360360" r="71"/> </SegmentTimeline> </SegmentTemplate> <Representation id="VIDEO_7" width="352" height="198" .../> <Representation id="VIDEO_6" width="384" height="216" .../> <Representation id="VIDEO_5" width="480" height="270" .../> <Representation id="VIDEO_4" width="608" height="342" .../> <Representation id="VIDEO_3" width="768" height="432" .../> <Representation id="VIDEO_2" width="1024" height="576" .../> <Representation id="VIDEO_1" width="1280" height="720" .../> <Representation id="VIDEO_0" width="1280" height="720" .../> </AdaptationSet> <AdaptationSet id="1" mimeType="audio/mp4" segmentAlignment="true" bitstreamSwitching="true"> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <InbandEventStream schemeIdUri="www.nielsen.com:id3:v1" value="1"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054861448" d="360960"/> <S d="359040"/> <S d="360960" r="1"/> <S d="359040"/> <S d="360960" r="2"/> <S d="359040"/> <S d="360960" r="1"/> <S d="359040"/> <S d="360960" r="1"/> <S d="359040"/> <S d="360960" r="1"/> .... <S d="360960" r="2"/> </SegmentTimeline> </SegmentTemplate> <Representation id="AUDIO" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="96000"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> </Representation> </AdaptationSet> </Period></MPD> 23
5 Minute Manifest with Compressed TimelineOPTIMIZING FOR SCALE
● By The Numbers
○ 78 XML Nodes
○ 8.1KB Uncompressed Size
○ ~20ms Parse Time
● Smaller Magnitude, Scales The Same
○ 1 hour => 986 Nodes, 100KB
○ 3 hour => 3351 Nodes, 373KB
● Cost Accumulates Over Time
○ Updates increase in cost over time
○ Parsing during playback is expensive
○ What is really changing in updates?
![Page 24: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/24.jpg)
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minBufferTime="PT1.0S" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" ...> <Period id="1" start="PT70406333.088S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" ...> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054860526" d="360360" r="1"/> </SegmentTimeline> </SegmentTemplate> <Representation id="VIDEO_7" width="352" height="198" .../> <Representation id="VIDEO_6" width="384" height="216" .../> <Representation id="VIDEO_5" width="480" height="270" .../> <Representation id="VIDEO_4" width="608" height="342" .../> <Representation id="VIDEO_3" width="768" height="432" .../> <Representation id="VIDEO_2" width="1024" height="576" .../> <Representation id="VIDEO_1" width="1280" height="720" .../> <Representation id="VIDEO_0" width="1280" height="720" .../> </AdaptationSet> <AdaptationSet id="1" mimeType="audio/mp4" segmentAlignment="true" bitstreamSwitching="true"> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <InbandEventStream schemeIdUri="www.nielsen.com:id3:v1" value="1"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054861448" d="360960"/> <S d="359040"/> </SegmentTemplate> <Representation id="AUDIO" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="96000"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> </Representation> </AdaptationSet> </Period></MPD>
24
Changes Across UpdatesOPTIMIZING FOR SCALE
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minBufferTime="PT1.0S" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" ...> <Period id="1" start="PT70406333.088S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" ...> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054860526" d="360360" r="2"/> </SegmentTimeline> </SegmentTemplate> <Representation id="VIDEO_7" width="352" height="198" .../> <Representation id="VIDEO_6" width="384" height="216" .../> <Representation id="VIDEO_5" width="480" height="270" .../> <Representation id="VIDEO_4" width="608" height="342" .../> <Representation id="VIDEO_3" width="768" height="432" .../> <Representation id="VIDEO_2" width="1024" height="576" .../> <Representation id="VIDEO_1" width="1280" height="720" .../> <Representation id="VIDEO_0" width="1280" height="720" .../> </AdaptationSet> <AdaptationSet id="1" mimeType="audio/mp4" segmentAlignment="true" bitstreamSwitching="true"> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <InbandEventStream schemeIdUri="www.nielsen.com:id3:v1" value="1"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054861448" d="360960"/> <S d="359040"/> <S d="360960"/> </SegmentTemplate> <Representation id="AUDIO" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="96000"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> </Representation> </AdaptationSet> </Period></MPD>
![Page 25: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/25.jpg)
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minBufferTime="PT1.0S" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" ...> <Period id="1" start="PT70406333.088S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" ...> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054860526" d="360360" r="1"/> </SegmentTimeline> </SegmentTemplate> <Representation id="VIDEO_7" width="352" height="198" .../> <Representation id="VIDEO_6" width="384" height="216" .../> <Representation id="VIDEO_5" width="480" height="270" .../> <Representation id="VIDEO_4" width="608" height="342" .../> <Representation id="VIDEO_3" width="768" height="432" .../> <Representation id="VIDEO_2" width="1024" height="576" .../> <Representation id="VIDEO_1" width="1280" height="720" .../> <Representation id="VIDEO_0" width="1280" height="720" .../> </AdaptationSet> <AdaptationSet id="1" mimeType="audio/mp4" segmentAlignment="true" bitstreamSwitching="true"> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <InbandEventStream schemeIdUri="www.nielsen.com:id3:v1" value="1"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054861448" d="360960"/> <S d="359040"/> </SegmentTemplate> <Representation id="AUDIO" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="96000"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> </Representation> </AdaptationSet> </Period></MPD>
25
Changes Across UpdatesOPTIMIZING FOR SCALE
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minBufferTime="PT1.0S" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" ...> <Period id="1" start="PT70406333.088S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" ...> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054860526" d="360360" r="2"/> </SegmentTimeline> </SegmentTemplate> <Representation id="VIDEO_7" width="352" height="198" .../> <Representation id="VIDEO_6" width="384" height="216" .../> <Representation id="VIDEO_5" width="480" height="270" .../> <Representation id="VIDEO_4" width="608" height="342" .../> <Representation id="VIDEO_3" width="768" height="432" .../> <Representation id="VIDEO_2" width="1024" height="576" .../> <Representation id="VIDEO_1" width="1280" height="720" .../> <Representation id="VIDEO_0" width="1280" height="720" .../> </AdaptationSet> <AdaptationSet id="1" mimeType="audio/mp4" segmentAlignment="true" bitstreamSwitching="true"> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <InbandEventStream schemeIdUri="www.nielsen.com:id3:v1" value="1"/> <SegmentTemplate timescale="90000" presentationTimeOffset="3054857523" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="3054861448" d="360960"/> <S d="359040"/> <S d="360960"/> </SegmentTemplate> <Representation id="AUDIO" codecs="mp4a.40.2" audioSamplingRate="48000" startWithSAP="1" bandwidth="96000"> <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/> </Representation> </AdaptationSet> </Period></MPD>
![Page 26: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/26.jpg)
26
Optimizing Update RequestsOPTIMIZING FOR SCALE
● Solution Constraints
○ Send only new information to clients
○ Maintain response caching
○ Minimize request client processing
○ Keep server in control of playout
● Created the Patch Manifest concept
○ Special server update response
○ Leverages MPD structure semantics
○ Uses client persisted breadcrumbing
○ Relies on client timeline persistence
![Page 27: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/27.jpg)
27
Patch Manifest PlayoutOPTIMIZING FOR SCALE
![Page 28: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/28.jpg)
28
Patch Manifest PlayoutOPTIMIZING FOR SCALE
![Page 29: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/29.jpg)
29
Patch Manifest PlayoutOPTIMIZING FOR SCALE
![Page 30: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/30.jpg)
30
Patch Manifest PlayoutOPTIMIZING FOR SCALE
![Page 31: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/31.jpg)
31
Anatomy of a Join ManifestOPTIMIZING FOR SCALE
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minBufferTime="PT1.0S" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" ...> <SupplementalProperty schemeIdUri="urn:com:hulu:schema:mpd:2017:patch"> <Location>/patch_playout/CNN.mpd?period=1&video=5095823234&audio=5095823752</Location> </SupplementalProperty> <Period id="1" start="PT70715052.772S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" ...> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <SegmentTemplate timescale="90000" presentationTimeOffset="5069874311" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="5069877314" d="360360" r="71"/> </SegmentTimeline> </SegmentTemplate> <Representation id="VIDEO_7" width="352" height="198" .../> <Representation id="VIDEO_6" width="384" height="216" .../> <Representation id="VIDEO_5" width="480" height="270" .../> ...
![Page 32: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/32.jpg)
32
Anatomy of a Join ManifestOPTIMIZING FOR SCALE
<?xml version="1.0" encoding="UTF-8"?><MPD type="dynamic" minBufferTime="PT1.0S" minimumUpdatePeriod="PT3.0S" suggestedPresentationDelay="PT8S" ...> <SupplementalProperty schemeIdUri="urn:com:hulu:schema:mpd:2017:patch"> <Location>/patch_playout/CNN.mpd?period=1&video=5095823234&audio=5095823752</Location> </SupplementalProperty> <Period id="1" start="PT70715052.772S"> <BaseURL serviceLocation="cdn-1">https://cdn-1.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-2">https://cdn-2.net/CNN/</BaseURL> <BaseURL serviceLocation="cdn-3">https://cdn-3.net/CNN/</BaseURL> <AdaptationSet id="2" mimeType="video/mp4" segmentAlignment="true" bitstreamSwitching="true" ...> <Accessibility schemeIdUri="urn:scte:dash:cc:cea-608:2015" value="CC1=eng"/> <ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="..."/> <ContentProtection schemeIdUri="urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95"/> <ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"/> <SegmentTemplate timescale="90000" presentationTimeOffset="5069874311" media="CNN/$RepresentationID$/$Time$.m4s" initialization="CNN/init/$RepresentationID$.mp4"> <SegmentTimeline> <S t="5069877314" d="360360" r="71"/> </SegmentTimeline> </SegmentTemplate> <Representation id="VIDEO_7" width="352" height="198" .../> <Representation id="VIDEO_6" width="384" height="216" .../> <Representation id="VIDEO_5" width="480" height="270" .../> ...
![Page 33: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/33.jpg)
33
Anatomy of a Patch ManifestOPTIMIZING FOR SCALE
<?xml version="1.0" encoding="UTF-8"?><MPD ...> <EssentialProperty schemeIdUri="urn:com:hulu:schema:mpd:2017:patch"/> <Location>/patch_playout/CNN.mpd?period=1&video=5096183594&audio=5096184712</Location> <Period id="1"> <AdaptationSet id="2"> <SegmentTemplate> <SegmentTimeline> <S t="5095823234" d="360360"/> </SegmentTimeline> </SegmentTemplate> </AdaptationSet> <AdaptationSet id="1"> <SegmentTemplate> <SegmentTimeline> <S t="5095823752" d="360960"/> </SegmentTimeline> </SegmentTemplate> </AdaptationSet> </Period></MPD>
![Page 34: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/34.jpg)
34
Patch ManifestsOPTIMIZING FOR SCALE
● By The Numbers
○ 15 XML Nodes
○ 1KB Uncompressed Size
○ ~3ms Parse Time
● Successfully Deployed Solution
○ Constant cost addition over time
○ Efficient for network and client
○ No reduction in cache efficiency
○ Server fully in control of timeline
● Proposed back to MPEG-DASH
![Page 35: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/35.jpg)
Dynamic Ad Replacement
Scaling Live OTT with DASH
35
![Page 36: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/36.jpg)
36
Preparing Streams for Ad ReplacementDYNAMIC AD REPLACEMENT
● SCTE-35 Identifies Opportunities
○ Ingest stream contains markers
○ Encoders force segment
boundaries at markers
● Opportunities Translated to Periods
○ Consistency with VOD model
○ SCTE signals too inconsistent for
client processing
![Page 37: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/37.jpg)
37
Replacing In Stream AdsDYNAMIC AD REPLACEMENT
● Simple Period Replacement
○ Use SCTE-35 signalled duration
○ Frame accurate replacement
○ Advertisement Data contained in
Period EventStream
● Ad Targeting Impacts Cacheability
○ Caching granularity tied to targeting
○ OTT wants per user targeting
![Page 38: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/38.jpg)
38
Supporting Per User Targeting with Patch ManifestsDYNAMIC AD REPLACEMENT
![Page 39: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/39.jpg)
39
Supporting Per User Targeting with Patch ManifestsDYNAMIC AD REPLACEMENT
Find out how this works at Demuxed 2019!
![Page 40: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/40.jpg)
THANK YOU
40
![Page 41: DASH Scaling Live OTT with - Mile High Video Workshopmile-high.video/files/mhv2019/pdf/day2/2_16_Cava.pdf · 2019-07-31 · Scaling Live OTT with DASH Techniques and Lessons Learned](https://reader033.fdocuments.us/reader033/viewer/2022052802/5f1d1c5389c41002de7028db/html5/thumbnails/41.jpg)
Q&A
41