{"id":1358,"date":"2022-08-30T13:38:52","date_gmt":"2022-08-30T11:38:52","guid":{"rendered":"https:\/\/websites.fraunhofer.de\/video-dev\/?p=1358"},"modified":"2022-08-31T10:44:05","modified_gmt":"2022-08-31T08:44:05","slug":"dynamic-cdn-switching-content-steering-in-dash-js","status":"publish","type":"post","link":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/","title":{"rendered":"Dynamic CDN Switching &#8211; Content Steering in dash.js"},"content":{"rendered":"\n<p>&#8220;<em>Content distributors often use multiple Content Delivery Networks (CDNs) to distribute their content to the end-users. They may upload a copy of their catalog to each CDN, or more commonly have all CDNs pull the content from a common origin. Alternate URLs are generated, one for each CDN, that point at identical content. DASH players may access alternate URLs in the event of delivery problems&#8221; [1]. <\/em><\/p>\n\n\n\n<p><em>&#8220;<strong>Content steering<\/strong> describes a deterministic capability for a content distributor to switch the content source that a player uses either at start-up or midstream, by means of a remote steering service&#8221; [1].<\/em><\/p>\n\n\n\n<p>Content steering was discussed extensively on the HLS mailing list and officially introduced by Apple during WWDC 2022 as a mechanism to steer HLS clients to different servers based on load and redundancy [2]. The DASH Industry Forum (DASH-IF) has picked up the task to define a DASH specification for content steering that allows content providers to steer HLS and DASH client simultaneously with a single response from a steering server. The basic DASH content steering architecture is depicted in the Figure below.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"698\" height=\"399\" src=\"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-698x399.png\" alt=\"\" class=\"wp-image-1360\" srcset=\"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-698x399.png 698w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-400x228.png 400w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-768x439.png 768w, https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture.png 1222w\" sizes=\"auto, (max-width: 698px) 100vw, 698px\" \/><figcaption><em>Content Steering in DASH [1]<\/em><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Preparing the content<\/h2>\n\n\n\n<p>In a basic content steering scenario the content provider offers the DASH media segments via two different CDNs. For that reason, two<code> &lt;BaseURL<\/code>&gt; elements are defined in the MPD, pointing to the two available CDNS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;BaseURL serviceLocation=\"alpha\"&gt;https:\/\/cdn1.example.com\/&lt;\/BaseURL&gt;\n&lt;BaseURL serviceLocation=\"beta\"&gt;https:\/\/cdn2.example.com\/&lt;\/BaseURL&gt;<\/code><\/pre>\n\n\n\n<p>In addition, a new <code>&lt;ContentSteering&gt;<\/code> element is introduced and added to the MPD:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;ContentSteering defaultServiceLocation=\"beta\" queryBeforeStart=\"true\"&gt;\n  https:&#47;&#47;steeringserver.com&gt;\n&lt;\/ContentSteering&gt;<\/code><\/pre>\n\n\n\n<p>The <code>defaultServiceLocation<\/code> attribute points to the <code>serviceLocation<\/code> of the <code>&lt;BaseURL&gt;<\/code> element that should be used at playback start. The  <code>queryBeforeStart<\/code> attribute specifies if the player should resolve the response from the steering server before starting the playback. The URL to the steering server is specified within the <code>&lt;ContentSteering&gt;<\/code> element. Content steering is backwards compatible, clients that do not support the <code>&lt;ContentSteering&gt;<\/code> element will simply ignore it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The content steering server<\/h2>\n\n\n\n<p>The content steering server is responsible for handling the content steering requests from the DASH clients by returning a <em>steering manifest<\/em>. The steering manifest is a JSON document with the following key-values pairs:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n \"VERSION\": 1,\n \"TTL\": 300,\n \"RELOAD-URI\": \"https:\/\/steeringservice.com\/app\/instance12345?session=abc\"\n \"SERVICE-LOCATION-PRIORITY\": &#91;\"beta\",\"alpha\"]\n}<\/code><\/pre>\n\n\n\n<p>The <code>version<\/code> value specifies the version of the DASH content steering manifest. <code>TTL<\/code> defines how many seconds the client should wait before triggering the next request to the steering server. The optional <code>RELOAD-URI<\/code> holds information about the URI that the client should use the next time it requests the steering manifest. The <code>SERVICE-LOCATION-PRIORITY<\/code> defines the <code>serviceLocation<\/code> priorities in descending order. In the example above, the <code>BaseURL<\/code> element with <code>serviceLocation<\/code> set to <code>\"beta\"<\/code> (corresponding to CDN2) is supposed to be used by the DASH Clients in favor of the other available CDN.  <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">dash.js implementation<\/h2>\n\n\n\n<p>With version 4.5.0 of dash.js we introduce support for DASH content steering. The implementation is already available in the <a href=\"https:\/\/reference.dashif.org\/dash.js\/nightly\/samples\/\" target=\"_blank\" rel=\"noreferrer noopener\">nightly build<\/a> of the player, the corresponding pull request can be found <a href=\"https:\/\/github.com\/Dash-Industry-Forum\/dash.js\/pull\/4031\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>. For a demo of content steering in dash.js using a local test setup please checkout the video below:<\/p>\n\n\n\n<figure class=\"wp-block-video\"><video height=\"1080\" style=\"aspect-ratio: 1920 \/ 1080;\" width=\"1920\" controls src=\"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/content-steering-hq-withintro.mp4\"><\/video><\/figure>\n\n\n\n<p>If you have any question regarding our DASH activities or dash.js in particular, feel free to check out our&nbsp;<a href=\"https:\/\/www.fokus.fraunhofer.de\/go\/dash\" target=\"_blank\" rel=\"noreferrer noopener\">website<\/a>&nbsp;and contact us.<\/p>\n\n\n\n<p>After two years of pandemic hiatus, we\u2019re glad to be back at <strong>IBC 2022 in person<\/strong>. If you want to see content steering in action and various other streaming related demos visit us at <strong>Hall 8 at Booth 8.B80<\/strong>. More information about our IBC 2022 demos can also be found <a href=\"https:\/\/www.fokus.fraunhofer.de\/go\/ibc\" target=\"_blank\" rel=\"noreferrer noopener\">here<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">References<\/h2>\n\n\n\n<p>[1] DASH-IF CTS Version 0.9.0 &#8211; <a href=\"https:\/\/dashif.org\/docs\/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/dashif.org\/docs\/DASH-IF-CTS-00XX-Content-Steering-Community-Review.pdf<\/a> <\/p>\n\n\n\n<p>[2] Deliver reliable streams with HLS Content Steering &#8211;<a href=\"https:\/\/developer.apple.com\/videos\/play\/wwdc2022\/10144\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/developer.apple.com\/videos\/play\/wwdc2022\/10144\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;Content distributors often use multiple Content Delivery Networks (CDNs) to distribute their content to the end-users. They may upload a copy of their catalog to each CDN, or more commonly have all CDNs pull the content from a common origin&#8230;.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,45,2],"tags":[],"coauthors":[6],"class_list":["post-1358","post","type-post","status-publish","format-standard","hentry","category-dash-js","category-hls","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>Dynamic CDN Switching - Content Steering in dash.js - Video-Dev<\/title>\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\/dynamic-cdn-switching-content-steering-in-dash-js\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dynamic CDN Switching - Content Steering in dash.js - Video-Dev\" \/>\n<meta property=\"og:description\" content=\"&#8220;Content distributors often use multiple Content Delivery Networks (CDNs) to distribute their content to the end-users. They may upload a copy of their catalog to each CDN, or more commonly have all CDNs pull the content from a common origin....\" \/>\n<meta property=\"og:url\" content=\"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/\" \/>\n<meta property=\"og:site_name\" content=\"Video-Dev\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-30T11:38:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-08-31T08:44:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-698x399.png\" \/>\n<meta name=\"author\" content=\"Daniel Silhavy\" \/>\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\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/\"},\"author\":{\"name\":\"Daniel Silhavy\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#\\\/schema\\\/person\\\/f7e1eee3cb4eae87a59648195014a809\"},\"headline\":\"Dynamic CDN Switching &#8211; Content Steering in dash.js\",\"datePublished\":\"2022-08-30T11:38:52+00:00\",\"dateModified\":\"2022-08-31T08:44:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/\"},\"wordCount\":575,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/steering-architecture-698x399.png\",\"articleSection\":[\"dash.js\",\"HLS\",\"MPEG-DASH\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/\",\"url\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/\",\"name\":\"Dynamic CDN Switching - Content Steering in dash.js - Video-Dev\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/steering-architecture-698x399.png\",\"datePublished\":\"2022-08-30T11:38:52+00:00\",\"dateModified\":\"2022-08-31T08:44:05+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/#\\\/schema\\\/person\\\/f7e1eee3cb4eae87a59648195014a809\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#primaryimage\",\"url\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/steering-architecture.png\",\"contentUrl\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/wp-content\\\/uploads\\\/2022\\\/08\\\/steering-architecture.png\",\"width\":1222,\"height\":698},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/dynamic-cdn-switching-content-steering-in-dash-js\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/websites.fraunhofer.de\\\/video-dev\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dynamic CDN Switching &#8211; Content Steering in dash.js\"}]},{\"@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":"Dynamic CDN Switching - Content Steering in dash.js - Video-Dev","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\/dynamic-cdn-switching-content-steering-in-dash-js\/","og_locale":"en_US","og_type":"article","og_title":"Dynamic CDN Switching - Content Steering in dash.js - Video-Dev","og_description":"&#8220;Content distributors often use multiple Content Delivery Networks (CDNs) to distribute their content to the end-users. They may upload a copy of their catalog to each CDN, or more commonly have all CDNs pull the content from a common origin....","og_url":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/","og_site_name":"Video-Dev","article_published_time":"2022-08-30T11:38:52+00:00","article_modified_time":"2022-08-31T08:44:05+00:00","og_image":[{"url":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-698x399.png","type":"","width":"","height":""}],"author":"Daniel Silhavy","twitter_card":"summary_large_image","twitter_creator":"@dsilhavy","twitter_misc":{"Written by":"Daniel Silhavy","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#article","isPartOf":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/"},"author":{"name":"Daniel Silhavy","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#\/schema\/person\/f7e1eee3cb4eae87a59648195014a809"},"headline":"Dynamic CDN Switching &#8211; Content Steering in dash.js","datePublished":"2022-08-30T11:38:52+00:00","dateModified":"2022-08-31T08:44:05+00:00","mainEntityOfPage":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/"},"wordCount":575,"commentCount":0,"image":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#primaryimage"},"thumbnailUrl":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-698x399.png","articleSection":["dash.js","HLS","MPEG-DASH"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/","url":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/","name":"Dynamic CDN Switching - Content Steering in dash.js - Video-Dev","isPartOf":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#website"},"primaryImageOfPage":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#primaryimage"},"image":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#primaryimage"},"thumbnailUrl":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture-698x399.png","datePublished":"2022-08-30T11:38:52+00:00","dateModified":"2022-08-31T08:44:05+00:00","author":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/#\/schema\/person\/f7e1eee3cb4eae87a59648195014a809"},"breadcrumb":{"@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#primaryimage","url":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture.png","contentUrl":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-content\/uploads\/2022\/08\/steering-architecture.png","width":1222,"height":698},{"@type":"BreadcrumbList","@id":"https:\/\/websites.fraunhofer.de\/video-dev\/dynamic-cdn-switching-content-steering-in-dash-js\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/websites.fraunhofer.de\/video-dev\/"},{"@type":"ListItem","position":2,"name":"Dynamic CDN Switching &#8211; Content Steering in dash.js"}]},{"@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\/1358","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=1358"}],"version-history":[{"count":19,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/posts\/1358\/revisions"}],"predecessor-version":[{"id":1386,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/posts\/1358\/revisions\/1386"}],"wp:attachment":[{"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/media?parent=1358"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/categories?post=1358"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/tags?post=1358"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/websites.fraunhofer.de\/video-dev\/wp-json\/wp\/v2\/coauthors?post=1358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}