DASH - Dynamic Adaptive Streaming ================================== .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is DASH?** DASH, or Dynamic Adaptive Streaming over HTTP, is a video streaming protocol that allows media content to be delivered over the internet in a way that adapts to the viewer's network conditions. It's also known as MPEG-DASH, and it works by breaking video into small segments at multiple quality levels. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is DASH Useful?** * Adapts video quality in real time based on internet speed. * Reduces buffering and playback interruptions. * Works over standard HTTP servers, so it's easy to deploy. * Supports multiple devices and platforms without needing plugins. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works?** * Video is split into segments - The content is encoded at different quality levels (bitrates). * Client requests a manifest file - Called the MPD (Media Presentation Description), which lists available segments and qualities. * Client selects segments - Based on current bandwidth, the client downloads the best-quality segment it can play smoothly. * Playback continues - The client keeps checking network conditions and switches quality up or down as needed. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is DASH used?** * Video streaming platforms - Like YouTube, Netflix, and others. * Live broadcasts - Sports, news, and events streamed online. * Educational platforms - For delivering lectures and tutorials. * Corporate training - For scalable, adaptive video delivery. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which OSI layer does this protocol belong to?** * It defines how video content is requested and delivered using HTTP. * It uses application-level logic to adapt to network conditions. * It works on top of standard web protocols like HTTP and TCP. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`DASH Version&RFC Details ` * :ref:`DASH Basic Setup on Ubuntu using IPv4 ` * :ref:`DASH Basic Setup on Ubuntu using IPv6 ` * :ref:`DASH Protocol Packet Details ` * :ref:`DASH Usecases ` * :ref:`DASH Basic Features ` * :ref:`DASH Feature : Adaptive Bitrate Streaming ` * :ref:`DASH Feature : Segment-Based Delivery ` * :ref:`DASH Feature : MPD ` * :ref:`DASH Feature : Codec Agnostic ` * :ref:`DASH Feature : DRM Support ` * :ref:`DASH Feature : Multi-Track Support ` * :ref:`DASH Feature : Live and On-Demand Support ` * :ref:`DASH Feature : HTTP-Based Delivery ` * :ref:`DASH Feature : Low-Latency Extensions ` * :ref:`DASH Feature : Interoperability Profiles ` * :ref:`Reference links ` .. _DASH_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _DASH_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _DASH_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _DASH_step5: .. tab-set:: .. tab-item:: DASH Version&RFC Details .. csv-table:: :file: ./DASH/DASH_RFC_Details.csv :widths: 10,10,10,30,40 :header-rows: 1 .. _DASH_step19: .. tab-set:: .. tab-item:: DASH Basic Setup on Ubuntu using IPv4 * Setup .. _DASH_step20: .. tab-set:: .. tab-item:: DASH Basic Setup on Ubuntu using IPv6 * Setup .. _DASH_step6: .. tab-set:: .. tab-item:: DASH Protocol Packet Details **DASH MPD Request Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_1.csv :widths: 10,20,30,10 :header-rows: 1 **DASH MPD Response Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_2.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Media segment Request Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_3.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Media segment Response Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_4.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Byte-Range Request Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_5.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Byte-Range Response Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_6.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Adaptive Bitrate Switch Request Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_7.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Initialization Segment Request Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_8.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Initialization Segment Response Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_9.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Manifest Update Request Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_10.csv :widths: 10,20,30,10 :header-rows: 1 **DASH Manifest Update Response Packet** .. csv-table:: :file: ./DASH/DASH_Protocol_Packet_11.csv :widths: 10,20,30,10 :header-rows: 1 .. _DASH_step7: .. tab-set:: .. tab-item:: DASH Usecases .. csv-table:: :file: ./DASH/DASH_Usecases.csv :widths: 10,20,30 :header-rows: 1 .. _DASH_step8: .. tab-set:: .. tab-item:: DASH Basic Features .. csv-table:: :file: ./DASH/DASH_Features.csv :widths: 10,10,30 :header-rows: 1 .. _DASH_step9: .. tab-set:: .. tab-item:: DASH Feature : Adaptive Bitrate Streaming **Adaptive Bitrate Streaming - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-1_Adaptive_Bitrate_Streaming_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step10: .. tab-set:: .. tab-item:: DASH Feature : Segment-Based Delivery **Segment-Based Delivery - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-2_Segment-Based_Delivery_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step11: .. tab-set:: .. tab-item:: DASH Feature : MPD **MPD - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-3_MPD_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step12: .. tab-set:: .. tab-item:: DASH Feature : Codec Agnostic **Codec Agnostic - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-4_Codec_Agnostic_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step13: .. tab-set:: .. tab-item:: DASH Feature : DRM Support **DRM Support - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-5_DRM_Support_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step14: .. tab-set:: .. tab-item:: DASH Feature : Multi Track Support **Multi Track Support - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-6_Multi-Track_Support_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step15: .. tab-set:: .. tab-item:: DASH Feature : Live and On-Demand Support **Live and On-Demand Support - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-7_Live_and_On-Demand_Support_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step16: .. tab-set:: .. tab-item:: DASH Feature : HTTP-Based Delivery **HTTP-Based Delivery - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-8_HTTP-Based_Delivery_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step17: .. tab-set:: .. tab-item:: DASH Feature : Low-Latency Extensions **Low-Latency Extensions - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-9_Low-Latency_Extensions_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step18: .. tab-set:: .. tab-item:: DASH Feature : Interoperability Profiles **Interoperability Profiles - Testcases** .. csv-table:: :file: ./DASH/DASH_Feature-10_Interoperability_Profiles_Testcase.csv :widths: 10,10,30,20 :header-rows: 1 .. _DASH_step21: .. tab-set:: .. tab-item:: Reference links * Reference links