{"id":581,"date":"2020-06-05T23:11:54","date_gmt":"2020-06-05T21:11:54","guid":{"rendered":"https:\/\/websites.fraunhofer.de\/video-dev\/?p=581"},"modified":"2020-06-22T17:22:46","modified_gmt":"2020-06-22T15:22:46","slug":"why-and-how-to-align-media-segments-for-abr-streaming","status":"publish","type":"post","link":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/","title":{"rendered":"Why and how to align media segments for ABR streaming"},"content":{"rendered":"\n<p>My colleagues and I love watching football, so I figured that quoting a former NFL player should be a good way to start a blog post:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>If you align expectations with reality, you will never be disappointed.<\/strong><\/p><cite>Terrell Owens<\/cite><\/blockquote>\n\n\n\n<p>I am pretty sure Terrell Owens wasn&#8217;t <em>exactly<\/em> thinking about media streaming when he said that. However, if we interpret the quote a bit differently and align our expectations (optimal media playback) with the reality on media segments, we will also not be disappointed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What happens in our MPD?<\/h2>\n\n\n\n<p>When it comes to media streaming, manifest files are a crucial component of the streaming chain. In a manifest file, the player finds all necessary information on media timing, available media qualities and location of the media segments. In MPEG-DASH, manifest files have an XML structure and are called Media Presentation Description (MPD). <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">MPD example &#8211; audio and video segments are not aligned<\/h3>\n\n\n\n<p>When looking into a live DASH MPD, you might have stumbled onto something like the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;AdaptationSet contentType=\"video\"\n    &lt;SegmentTemplate timescale=\"90000\">\n        &lt;SegmentTimeline>\n             &lt;S d=\"180000\" r=\"149\" t=\"143220940740000\" \/>\n        &lt;\/SegmentTimeline>\n    &lt;\/SegmentTemplate>\n&lt;\/AdaptationSet>\n&lt;AdaptationSet contentType=\"audio\">\n         &lt;SegmentTemplate timescale=\"48000\">\n              &lt;SegmentTimeline>\n                  &lt;S d=\"96256\" r=\"2\" t=\"76384501728256\" \/>\n                  &lt;S d=\"95232\" \/>\n                  &lt;S d=\"96256\" r=\"2\" \/>\n                  &lt;S d=\"95232\" \/>\n                  &lt;S d=\"96256\" r=\"2\" \/>\n                  &lt;S d=\"95232\" \/>\n                  .... lots of lines later\n                  &lt;S d=\"96256\" r=\"2\" \/>\n                  &lt;S d=\"95232\" \/>\n              &lt;\/SegmentTimeline>\n         &lt;\/SegmentTemplate>\n&lt;\/AdaptationSet><\/code><\/pre>\n\n\n\n<p>In this case, the packager created an MPD file using the SegmentTimeline element.  <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A detailed look into audio and video adaptation sets<\/h3>\n\n\n\n<p>The video adaptation set looks very convenient and the segments have a consistent duration of 2 seconds (180000\/90000). The packager makes use of the @r attribute to signal a repetition in video segment duration. Consequently, only one line is required to list all available and upcoming video segments. <\/p>\n\n\n\n<p>If we look at the audio adaptation set, we immediately notice a major difference. Instead of having a single &lt;S&gt; element like in the video adaptation set, the audio adaptation set requires multiple &lt;S&gt; elements. In other words, although the combined duration of all audio segments is similar to the combined duration of all video segments, the number of required entries in the DASH MPD is significantly higher for audio.<br>Additionally, instead of having a consistent segment duration of 2 seconds, audio segment durations vary in a repeating pattern:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;S d=\"96256\" r=\"2\" \/>\n&lt;S d=\"95232\" \/><\/code><\/pre>\n\n\n\n<p>The first three segments in each iteration of the pattern has a duration of  2.0053 seconds while the last segment has a duration of 1.984 seconds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The consequences of unaligned media segments<\/h2>\n\n\n\n<p>Before we examine the cause of the inconsistent audio segment durations, we discuss the consequences:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Oversized manifest files<\/h3>\n\n\n\n<p>A major downside of manifest files with SegmentTimeline elements and unaligned media segments is the size of the manifest file itself. <\/p>\n\n\n\n<p>Let&#8217;s assume that we have a DVR window of two hours. Consequently, we need two hours of segment information in our manifest. In our example, the audio segments have a duration of approximately 2 seconds. Hence, a single instance of the pattern depicted in Listing 2 (two lines in the MPD) adds up to 8 seconds of audio duration. This leaves us with the following equation to calculate the number of lines required in the MPD:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Number of lines = (7200 \/ 8) * 2 \nNumber of lines = 1800<\/code><\/pre>\n\n\n\n<p>1800 lines in the MPD, just for defining the audio segments. If the manifest is refreshed every two seconds, a large manifest causes a significant amount of traffic on the CDN.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Player performance considerations<\/h3>\n\n\n\n<p>Another important aspect, which is often overlooked, is the parsing overhead on the client. In our paper,  <a rel=\"noreferrer noopener\" href=\"https:\/\/dl.acm.org\/doi\/10.1145\/3083165.3083172\" target=\"_blank\">&#8220;Performance considerations of HTML5-based dynamic packaging for media streaming&#8221;<\/a>, we examined the parsing duration for manifest files with different sizes on multiple devices. An example is depicted in the Figure below:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"2492\" height=\"612\" src=\"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png\" alt=\"\" class=\"wp-image-595\" srcset=\"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png 2492w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15-400x98.png 400w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15-698x171.png 698w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15-768x189.png 768w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15-1536x377.png 1536w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15-2048x503.png 2048w\" sizes=\"auto, (max-width: 2492px) 100vw, 2492px\" \/><figcaption>Parsing duration for manifest files with different sizes on multiple devices<\/figcaption><\/figure>\n\n\n\n<p>The content with ID number 2 had a manifest size of 192 kbyte. A Chromecast version 1 requires over 2 seconds for parsing and converting the manifest to a JSON representation. Worst case scenario, the parsing time will be higher than the manifest refresh period, which will ultimately result in playback issues. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Further drawbacks<\/h3>\n\n\n\n<p>There are further drawbacks of unaligned media segments. It is much easier to trim content and insert advertisements if the segments are aligned. A specific splice point can easily be mapped to segment boundaries. Moreover, from a player&#8217;s perspective, a playback seek is more accurate and easier to implement. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What causes segment misalignments?<\/h2>\n\n\n\n<p>Now that we know <em>why<\/em> it is important to align audio and video segments, we can further explore <em>what<\/em> causes the misalignments. <\/p>\n\n\n\n<p>Going back to our initial example: why not simply package audio segments with an exact duration of 2 seconds like we did for video?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Audio sampling rate and audio packet size<\/h3>\n\n\n\n<p>In the Advanced Audio Codec, the number of audio frames per packet size is fixed to 1024.&nbsp;Our example stream has an audio sampling rate of 48000 Hz. <\/p>\n\n\n\n<p>Now, if we want to create 2 second audio segments, we need to wrap 96000 audio frames into packets with a size of 1024 frames:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>96000 \/ 1024 = 93.75<\/code><\/pre>\n\n\n\n<p>This does not add up, we can not create 3\/4 of a packet.  Let&#8217;s try again with the segment durations we identified in our example: 2.0053 and 1.984, respectively:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(2.00533333 * 48000) \/ 1024 = 94\n(1.984 * 48000) \/ 1024 = 93<\/code><\/pre>\n\n\n\n<p>This worked out perfectly, where in both cases, we achieved a fixed number of packets.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recap <\/h2>\n\n\n\n<p>Ok, let&#8217;s do a quick summary before we do some more math. By now, we know that non-aligned media segments can lead to large manifest files. We definitely want to avoid that in order to save CDN costs and avoid client playback problems.<\/p>\n\n\n\n<p>In addition, we now know that our packager is not broken. There was a reason for the audio segment durations to be slightly lower and higher than two seconds. The sampling rate and fixed number of audio frames per packet size does not allow us to create audio segments with a duration of two seconds.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Finally: how to align our media segments<\/h2>\n\n\n\n<p>So what can we do to align our media segments? We simply have to choose a different segment duration! <\/p>\n\n\n\n<p>Let&#8217;s enhance our example with some more values. We assume our video has 25 frames per second (FPS). Essentially, what we want to achieve is to have the duration of all video frames of a segment to be equal to the duration of all audio frames of a segment. This leads us to the following formula:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>x * 1\/25 = y * (1024\/48000)\n... do some magic\nx\/y = 8\/15<\/code><\/pre>\n\n\n\n<p>This means that we can achieve the same duration of 0.32 seconds for every eighth video frame and fifteenth audio frame:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>8\/25 = (15*1024) \/ 48000 = 0.32 seconds<\/code><\/pre>\n\n\n\n<p>That&#8217;s it! The minimal segment duration we need in order to align audio and video segments is 0.32 seconds. Now we can multiply 0.32 with positive integer values to increase the segment duration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Typical audio and video segment durations<\/h3>\n\n\n\n<p>The tables below shows some typical values in order to create aligned audio and video segments for 25fps and 30fps with 48000 Hz each.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>Segment duration in sec<\/td><td>Video Frames<\/td><td>Audio Frames<\/td><\/tr><tr><td>1.92<\/td><td>48<\/td><td>90<\/td><\/tr><tr><td>3.84<\/td><td>96<\/td><td>180<\/td><\/tr><tr><td>6.4<\/td><td>160<\/td><td>300<\/td><\/tr><\/tbody><\/table><figcaption>25fps with AAC 48000 HZ<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><tbody><tr><td>Segment duration in sec<\/td><td>Video Frames<\/td><td>Audio Frames<\/td><\/tr><tr><td>1.60<\/td><td>48<\/td><td>75<\/td><\/tr><tr><td>4.80<\/td><td>144<\/td><td>225<\/td><\/tr><tr><td>6.4<\/td><td>192<\/td><td>300<\/td><\/tr><\/tbody><\/table><figcaption>30ps with AAC 48000 HZ<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>In this blog post, we&#8217;ve identified the downsides of misaligned media segments. The resulting large manifest files can lead to increased CDN costs and performance problems on the client side. <\/p>\n\n\n\n<p>By choosing segment durations for which the duration of all video frames is equal to the duration of all audio frames, misalignments can be resolved. <\/p>\n\n\n\n<p>In one of our next blog posts, we will illustrate how to achieve segment alignment when encoding and packaging with Elemental Live and Elemental Delta. <\/p>\n\n\n\n<p>If you have any additional question regarding our DASH activities or dash.js in particular, feel free to check out our <a onclick=\"wiredminds.trackEvent('TRACK-LINK: Link from:dash-seg-alignment to:go-dash')\" href=\"https:\/\/www.fokus.fraunhofer.de\/go\/dash\">website.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>My colleagues and I love watching football, so I figured that quoting a former NFL player should be a good way to start a blog post: If you align expectations with reality, you will never be disappointed. Terrell Owens I&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"coauthors":[6,22],"class_list":["post-581","post","type-post","status-publish","format-standard","hentry","category-mpeg-dash"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Why and how to align media segments for ABR streaming - Video-Dev<\/title>\n<meta name=\"description\" content=\"Aligning media segments in ABR streaming decreases CDN costs and leads to robust playback. Learn how it works in this blog post.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why and how to align media segments for ABR streaming - Video-Dev\" \/>\n<meta property=\"og:description\" content=\"Aligning media segments in ABR streaming decreases CDN costs and leads to robust playback. Learn how it works in this blog post.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/\" \/>\n<meta property=\"og:site_name\" content=\"Video-Dev\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-05T21:11:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-22T15:22:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png\" \/>\n<meta name=\"author\" content=\"Daniel Silhavy, Robert Seeliger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dsilhavy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Silhavy, Robert Seeliger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/\"},\"author\":{\"name\":\"Daniel Silhavy\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#\\\/schema\\\/person\\\/f7e1eee3cb4eae87a59648195014a809\"},\"headline\":\"Why and how to align media segments for ABR streaming\",\"datePublished\":\"2020-06-05T21:11:54+00:00\",\"dateModified\":\"2020-06-22T15:22:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/\"},\"wordCount\":1212,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Bildschirmfoto-2020-06-05-um-21.53.15.png\",\"articleSection\":[\"MPEG-DASH\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/\",\"url\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/\",\"name\":\"Why and how to align media segments for ABR streaming - Video-Dev\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Bildschirmfoto-2020-06-05-um-21.53.15.png\",\"datePublished\":\"2020-06-05T21:11:54+00:00\",\"dateModified\":\"2020-06-22T15:22:46+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#\\\/schema\\\/person\\\/f7e1eee3cb4eae87a59648195014a809\"},\"description\":\"Aligning media segments in ABR streaming decreases CDN costs and leads to robust playback. Learn how it works in this blog post.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#primaryimage\",\"url\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Bildschirmfoto-2020-06-05-um-21.53.15.png\",\"contentUrl\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Bildschirmfoto-2020-06-05-um-21.53.15.png\",\"width\":2492,\"height\":612},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/why-and-how-to-align-media-segments-for-abr-streaming\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why and how to align media segments for ABR streaming\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#website\",\"url\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/\",\"name\":\"Video-Dev\",\"description\":\"Future Applications and Media - Video Development Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#\\\/schema\\\/person\\\/f7e1eee3cb4eae87a59648195014a809\",\"name\":\"Daniel Silhavy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/0-1-150x150.jpegccb13c1b60303228bf3c575f3345fe29\",\"url\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/0-1-150x150.jpeg\",\"contentUrl\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/0-1-150x150.jpeg\",\"caption\":\"Daniel Silhavy\"},\"description\":\"Daniel Silhavy studied Computer Science at the Technical University of Berlin (TUB). He received his Masters degree with the completion of his thesis \u201cAd Insertion in MPEG-DASH\u201d at Fraunhofer Institute for Open Communication Systems (FOKUS) in 2015. Currently, he is employed as a scientific assistant and project manager at the Business Unit Future Applications and Media (FAME). He specializes in the R&amp;D of topics dealing with IPTV and adaptive media streaming.\",\"sameAs\":[\"https:\\\/\\\/www.fokus.fraunhofer.de\\\/fame\\\/team\\\/silhavy\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/daniel-silhavy-21650a129\\\/\",\"https:\\\/\\\/x.com\\\/dsilhavy\"],\"url\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/author\\\/silhavy\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Why and how to align media segments for ABR streaming - Video-Dev","description":"Aligning media segments in ABR streaming decreases CDN costs and leads to robust playback. Learn how it works in this blog post.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/","og_locale":"en_US","og_type":"article","og_title":"Why and how to align media segments for ABR streaming - Video-Dev","og_description":"Aligning media segments in ABR streaming decreases CDN costs and leads to robust playback. Learn how it works in this blog post.","og_url":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/","og_site_name":"Video-Dev","article_published_time":"2020-06-05T21:11:54+00:00","article_modified_time":"2020-06-22T15:22:46+00:00","og_image":[{"url":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png","type":"","width":"","height":""}],"author":"Daniel Silhavy, Robert Seeliger","twitter_card":"summary_large_image","twitter_creator":"@dsilhavy","twitter_misc":{"Written by":"Daniel Silhavy, Robert Seeliger","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#article","isPartOf":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/"},"author":{"name":"Daniel Silhavy","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#\/schema\/person\/f7e1eee3cb4eae87a59648195014a809"},"headline":"Why and how to align media segments for ABR streaming","datePublished":"2020-06-05T21:11:54+00:00","dateModified":"2020-06-22T15:22:46+00:00","mainEntityOfPage":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/"},"wordCount":1212,"commentCount":1,"image":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#primaryimage"},"thumbnailUrl":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png","articleSection":["MPEG-DASH"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/","url":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/","name":"Why and how to align media segments for ABR streaming - Video-Dev","isPartOf":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#primaryimage"},"image":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#primaryimage"},"thumbnailUrl":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png","datePublished":"2020-06-05T21:11:54+00:00","dateModified":"2020-06-22T15:22:46+00:00","author":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#\/schema\/person\/f7e1eee3cb4eae87a59648195014a809"},"description":"Aligning media segments in ABR streaming decreases CDN costs and leads to robust playback. Learn how it works in this blog post.","breadcrumb":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#primaryimage","url":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png","contentUrl":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2020\/06\/Bildschirmfoto-2020-06-05-um-21.53.15.png","width":2492,"height":612},{"@type":"BreadcrumbList","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/why-and-how-to-align-media-segments-for-abr-streaming\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/websites.fraunhofer.de\/video-dev\/"},{"@type":"ListItem","position":2,"name":"Why and how to align media segments for ABR streaming"}]},{"@type":"WebSite","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#website","url":"https:\/\/websites.fraunhofer.de\/video-dev\/","name":"Video-Dev","description":"Future Applications and Media - Video Development Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/websites.fraunhofer.de\/video-dev\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#\/schema\/person\/f7e1eee3cb4eae87a59648195014a809","name":"Daniel Silhavy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2019\/11\/0-1-150x150.jpegccb13c1b60303228bf3c575f3345fe29","url":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2019\/11\/0-1-150x150.jpeg","contentUrl":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2019\/11\/0-1-150x150.jpeg","caption":"Daniel Silhavy"},"description":"Daniel Silhavy studied Computer Science at the Technical University of Berlin (TUB). He received his Masters degree with the completion of his thesis \u201cAd Insertion in MPEG-DASH\u201d at Fraunhofer Institute for Open Communication Systems (FOKUS) in 2015. Currently, he is employed as a scientific assistant and project manager at the Business Unit Future Applications and Media (FAME). He specializes in the R&amp;D of topics dealing with IPTV and adaptive media streaming.","sameAs":["https:\/\/www.fokus.fraunhofer.de\/fame\/team\/silhavy","https:\/\/www.linkedin.com\/in\/daniel-silhavy-21650a129\/","https:\/\/x.com\/dsilhavy"],"url":"https:\/\/websites.fraunhofer.de\/video-dev\/author\/silhavy\/"}]}},"_links":{"self":[{"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/posts\/581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/comments?post=581"}],"version-history":[{"count":40,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/posts\/581\/revisions"}],"predecessor-version":[{"id":637,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/posts\/581\/revisions\/637"}],"wp:attachment":[{"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/media?parent=581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/categories?post=581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/tags?post=581"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/coauthors?post=581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}