Zum Hauptinhalt wechseln

 Subscribe

As a follow up on Jason’s announcement of our dynamic manifest capabilities last month during NAB, I am pleased to announce that they are now available for you to begin using in your streaming applications. Jason’s post covered many of the common usage scenarios so I encourage you to start there if this is the first time you’re reading about dynamic manifests since here I will primarily focus on technical implementation details. Before going into the details of how it works, I want to provide some background for the following terminologies.

  • Adaptive Bit Rate over HTTP (ABR), adaptive bit rate streaming is a method of video streaming over HTTP where the source content is encoded at multiple bit rates and chunked into small multi-second parts. The streaming client is made aware of the available streams at differing bit rates, and chunks of the streams by a manifest file. To meet the subscriber demand for multi-screen and deliver video to any device across any network, operators use adaptive bit rate (ABR) protocols in their multi-screen implementations, such as Apple HLS, Microsoft Smooth, Adobe HDS and MPEG-DASH.
  • The manifest, sometimes referred to as “the playlist”. This file includes streaming metadata such as qualities, audio languages, and presentation window and also provides the player currently available as well as next playable fragments with their respective locations. It is a text-based or XML file with specific attributes depending on format.  Using “asset filters” which I’ll describe below you can create a dynamic manifest based on the following properties and attributes.
    Track type – audio, video, or text
    Track name
    Start and end time
    Presentation window – sliding window of fixed duration, anchored from live position.
    Bitrate (qualities)
    Track language
    FourCC
  • Fragments/segments, actual chunks of video, audio or text content.

What is a filter?

Asset filter is a combination of rules based on manifest attributes and timeline which describes the streaming endpoint (backend service) how to manipulate the output playlist (Manifest).

Filter Types

There are two types of asset filters; global and local (asset level). Both of the filter types have exactly the same features and uses the same attributes to define filters. The main difference between the two is the scenarios they are suitable for and also where they are stored.

  • Global filters are generally suitable for device profiles (track filtering) whereas local filters are mostly preferred for range filters (trimming), since most of the time trimming is specific to asset.
  • Global filters are stored at the account level and when created can be applied to all assets under the account. Local filters are per asset and can only be used for the asset under which they are created. A local filter’s lifetime is tied to the asset lifetime, in other words when the asset is deleted all local filters created on it are also deleted.

How it works?

Filters can consists of multiple rules. As an example you can define remove slate and apply back-off over a live playlist (manifest) as well as include removing qualities to the combination. For multiple filtering rules the end result is the composition (intersection only) of the rules.

dynamic_manifest8

Creating Filters through Our APIs

Asset filter API is available for Azure Media Service REST version >= 2.11. This release includes only REST APIs and a corresponding .NET SDK is underway which is targeted for following weeks.
You can find more information regarding to Azure Media Services REST from here.

Asset filters consist of two sections (groups); PresentationTimeRange and Tracks.

PresentationTimeRange:

Attribute Description Applies To Constraints
StartTimestamp Media that starts after this timestamp will be included in the playlist (manifest). Live and VOD Absolute time. Value rounded to the closest next GOP start.
EndTimestamp Media that ends before this timestamp will be included in the playlist (manifest). VOD For live presentation it is silently ignored and applies when the presentation ends (Live2VOD) Absolute time. Value rounded to the closest next GOP start.
PresentationWindowDuration Defines a sliding window at the live edge or end of the presentation. Media within this sliding window will be included in the playlist (manifest). Live, but also applies to VOD to enable smooth transitions when the presentation ends. The minimum presentation window duration is 120 seconds.
LiveBackoffDuration Applies a live presentation backoff, or delay, to the media. Live only, but silently ignored for VOD to enable smooth transitions when the presentation ends. The maximum live backoff duration is 60 seconds.
Timescale The timescale used by the timestamps and durations specified above. The default timescale is 10000000. Live and VOD Default is 10000000 (HNS)

Tracks:

Property Description Applies To Constraints
Type Type of the track. Values can be video, audio, or text. Live and VOD video, audio, or text
Name Name of the Track Live and VOD
Language Track language Live and VOD format specified in RFC 5646
FourCC Track FourCC value Live and VOD first element of codecs format specified in RFC 6381
Bitrate Bitrate of the track. Live and VOD Can be a range value or exact value

 

Note: Azure Media Services dynamic packager can source from multi-bitrate MP4 and Smooth Streaming files. Dynamic manifests(asset filters) uses Smooth Streaming server and client manifest data for filtering. Please also note that you should have at least one streaming unit to use this feature.

Sample Global filter REST request:




<updated>2015-04-03T20:50:34Z</updated>
<author><name /></author>
<content type="application/xml">

<m:properties><d:Name>MyGlobalFilter</d:Name>

<d:PresentationTimeRange>
<d:EndTimestamp m:type="Edm.Int64">9223372036854775807</d:EndTimestamp>
<d:LiveBackoffDuration m:type="Edm.Int64">0</d:LiveBackoffDuration>
<d:PresentationWindowDuration m:type="Edm.Int64">800000000</d:PresentationWindowDuration>
<d:StartTimestamp m:type="Edm.Int64">0</d:StartTimestamp>
<d:Timescale m:type="Edm.Int64">10000000</d:Timescale>
</d:PresentationTimeRange>

<d:Tracks /></m:properties>

</content>
</entry></pre>
<p><strong>Sample Local (Asset Level) filter REST request:</strong></p>
<pre class="prettyprint"><?xml version="1.0" encoding="utf-8"?>
<entry xmlns=https://www.w3.org/2005/Atom xmlns:d="" xmlns:m="/metadata" xmlns:georss="" xmlns:gml="https://www.opengis.net/gml">
<id /><title />
<updated>2015-04-03T20:53:34Z</updated>
<author><name /></author>
<content type="application/xml">
<m:properties><d:Id></d:Id>

<d:Name>MyLocalFilter</d:Name>

<d:ParentAssetId>nb:cid:UUID:fcef555d-1500-80c4-def5-f1e4d721ea68</d:ParentAssetId>

<d:PresentationTimeRange>

<d:EndTimestamp m:type="Edm.Int64">9223372036854775807</d:EndTimestamp>
<d:LiveBackoffDuration m:type="Edm.Int64">300000000</d:LiveBackoffDuration>
<d:PresentationWindowDuration m:type="Edm.Int64">3000000000</d:PresentationWindowDuration>
<d:StartTimestamp m:type="Edm.Int64">400000</d:StartTimestamp>
<d:Timescale m:type="Edm.Int64">10000000</d:Timescale>

</d:PresentationTimeRange>

<d:Tracks>

<d:element>

<d:PropertyConditions>

<d:element>

<d:Operator>Equal</d:Operator><d:Property>Type</d:Property><d:Value>audio</d:Value>

</d:element>

<d:element>

<d:Operator>Equal</d:Operator><d:Property>Language</d:Property><d:Value>en</d:Value>

</d:element>

</d:PropertyConditions>

</d:element>

<d:element>

<d:PropertyConditions>

<d:element>

<d:Operator>NotEqual</d:Operator><d:Property>Type</d:Property><d:Value>video</d:Value>

</d:element>

<d:element>

<d:Operator>Equal</d:Operator><d:Property>Bitrate</d:Property><d:Value>0-2427000</d:Value>

</d:element>

</d:PropertyConditions>

</d:element>

</d:Tracks>

</m:properties>

</content></entry>
</pre>
<pre class="prettyprint"></pre>
<p> </p>
<p>After a filter has been created you can start using it by adding the filter name to the URL request by adding a filter parameter to the manifest request as in the example below.</p>
<p><a href="(filter=MyLocalFilter)">(<span>filter=MyLocalFilter</span>)</a></p>
<p>Filters can also be used in combination with <a href="https://azure.microsoft.com/en-us/documentation/articles/media-services-dynamic-packaging-overview/" target="_blank" rel="noopener">dynamic packaging</a> and <a href="https://msdn.microsoft.com/en-us/library/azure/dn783457.aspx" target="_blank" rel="noopener">dynamic encryption</a>. As an example here is a request for the same stream as above but in HLS v4 format.</p>
<p><a href="(format=m3u8-aapl,filter=MyLocalFilter)">(format=m3u8-aapl,<span>filter=MyLocalFilter</span>)</a></p>
<blockquote><p><strong>Note:</strong> Global filters can be used with all your assets under the same media services account by just adding the filter name to the asset streaming URL. Local filters can only be used with the asset they are associated with. Please see local filter asset example. (“<span>ParentAssetId</span>”)</p></blockquote>
<h2>What happens behind the scenes?</h2>
<p>When a request which includes a filter is received by the streaming endpoint, the original playlist (manifest) is processed using the filter rules and a filtered playlist is served out in our response. If there are multiple filter rules then rule intersection defines the output. Presentation range (time) rules are executed at GOP (Group of picture- Key Frame) boundaries and rounded to the nearest next fragment.<br />
As an example;<br />
<img decoding="async" title="dynamic_manifest9" src="https://azurecomcdn.azureedge.net/mediahandler/acomblog/media/Default/blog/dynamic_manifest9.png" alt="dynamic_manifest9" width="640" height="327" /></p>
<p>Filters only apply to the playlist (manifest) requests and actual fragments are not processed, hence players can get benefit of already cached fragments in the proxies and CDNs.<br />
Below is an example showing the original playlist (manifest) and filtered one; after applying a presentation range filter.</p>
<p><a href="https://acom.azurecomcdn.net/80C57D/blogmedia/blogmedia/2015/05/26/dynamic_manifest10.png"><img decoding="async" title="dynamic_manifest10" src="https://azurecomcdn.azureedge.net/mediahandler/acomblog/media/Default/blog/dynamic_manifest10_thumb.png" alt="dynamic_manifest10" width="640" height="482" /></a></p>
<p>As you can see above the output manifest only includes the segments within the defined filter start and end times.</p>
<h2>Know issues and limitations</h2>
<ul>
<li>Dynamic manifest operates in GOP boundaries (Key Frames) hence trimming has GOP accuracy. If you want frame accurate sub-clipping you can use rendered sub-clips feature.</li>
<li>You can use same filter name for local and global filters. In this case local filter takes precedence and overrides global.</li>
<li>If you update a filter, it can take up to 2 minutes for streaming endpoint to refresh the rules. Also please keep in mind that updating a filter can result in player failures if the content is already served with the old filter and cached in proxies and CDN caches. It is recommend to purge the cache after updating the filter. If this option is not possible please consider using a different filter.</li>
<li>This release doesn’t support combining multiple filters in the URL. You can only apply one filter at a time.</li>
<li>You can set “EndTimestamp” rules for both on-demand and live playlists. However this rule is silently ignored when the presentation is live and takes presence when the live presentation transforms to on-demand.</li>
<li>You can set “PresentationWindowDuration” and “LiveBackoffDuration” rules to both on-demand and live presentations. However for on-demand presentations this rules are silently ignored.</li>
</ul>
<h2>Conclusion</h2>
<p>Dynamic manifest (asset filters) is a powerful new feature which helps you to reach multiple-end points without the hassle of post-production and having multiple copies of the same asset. It allows you create multiple renditions and views in seconds.</p>
<p>I hope you will enjoy this cool feature! For feature requests or to provide general feedback—we want to hear it all! Please use comments section below and I’ll respond as quickly as I can.</p>
		</div>

		<div class="msx-max-w-70ch msx-mx-auto lg:msx-w-386 lg:msx-pl-4">
							<div id="single-sidebar" class="msx-border-0 msx-rounded msx-border-gray-70 msx-border-solid msx-border-t-2 msx-gray msx-shadow-4 msx-flex msx-flex-col msx-bg-white msx-px-2 msx-py-3">
					<ul class="msx-list-none msx-p-0 msx-m-0">
						<li id="text-3" class="widget widget_text"><h2 class="widgettitle">Explore</h2>
			<div class="textwidget"><p> </p>
<p>Let us know what you think of Azure and what you would like to see in the future.</p>
<p> </p>
<p><a href="https://feedback.azure.com/forums/34192--general-feedback">Provide feedback</a></p>
</div>
		</li>
<li id="text-4" class="widget widget_text">			<div class="textwidget"><p>Build your cloud computing and Azure skills with free courses by Microsoft Learn.</p>
<p> </p>
<p><a href="https://docs.microsoft.com/de-de/learn/azure/">Explore Azure learning</a></p>
</div>
		</li>
					</ul>
				</div>
					</div>

	</div>

	
</article><!-- #post-11824 -->
			</div>

												<div class="msx-bg-gray-20">
				<div class="msx-px-1 msx-mx-auto msx-max-w-7xl msx-pb-3 md:msx-pb-5">
					<h2 class="msx-pb-2 msx-pt-3 md:msx-pt-5 md:msx-pb-4 msx-text-xl md:msx-text-center md:msx-text-xxl">
						Related posts					</h2>
					<ul class="msx-list-none msx-p-0 msx-m-0 msx-flex msx-flex-col md:msx-flex-row msx--my-base md:msx-my-0 md:msx--mx-base">
																											<li class="msx-flex msx-py-base md:msx-w-1/4 md:msx-py-0 md:msx-px-base">
								
<article
	itemscope
	itemtype="http://schema.org/Article"
	class="msx-rounded msx-shadow-4 msx-flex msx-flex-col msx-items-start msx-bg-white md:msx-flex-row md:msx-justify-start msx-w-full post-4395 post type-post status-publish format-standard hentry category-uncategorized tag-cognitive-services tag-media-services-cdn product-media-services"	>

	<div class="msx-flex-grow msx-p-2 md:msx-order-1 msx-w-full">
		<header>

							<div class="msx-flex msx-flex-col md:msx-flex-row msx-w-full">
					<!-- category -->
					<p class="msx-text-sm msx-m-0 msx-pb-1 msx-links msx-links--current-color msx-text-gray-70 md:msx-pr-1">
						<a href="https://azure.microsoft.com/de-de/blog/category/uncategorized/" rel="category tag">Uncategorized</a>, <a href="https://azure.microsoft.com/de-de/blog/product/media-services/" rel="category tag">media-services</a>					</p>
				</div>
			
			<!--title-->
			<h3 itemprop="headline" class="msx-break-words msx-text-base msx-m-0 msx-w-full">
				<a
					href="https://azure.microsoft.com/de-de/blog/logic-apps-flow-connectors-will-make-automating-video-indexer-simpler-than-ever/"
					rel="bookmark"
					itemprop="mainEntityOfPage"
					class="msx-link msx-link--icon"
					data-bi-id="area-blog-index-clicked-relatedpost"
					data-bi-cn="Logic Apps, Flow connectors will make Automating Video Indexer simpler than ever"
					data-bi-an="body"
					data-bi-tn="undefined"
				>
					<span>Logic Apps, Flow connectors will make Automating Video Indexer simpler than ever</span> <span aria-hidden="true" class="msx-fluent-icons">chevron_right</span>
				</a>
			</h3>
		</header>
	</div>

</article><!-- #post-4395 -->
							</li>
																											<li class="msx-flex msx-py-base md:msx-w-1/4 md:msx-py-0 md:msx-px-base">
								
<article
	itemscope
	itemtype="http://schema.org/Article"
	class="msx-rounded msx-shadow-4 msx-flex msx-flex-col msx-items-start msx-bg-white md:msx-flex-row md:msx-justify-start msx-w-full post-4486 post type-post status-publish format-standard hentry category-uncategorized tag-cognitive-services tag-media-services-cdn product-media-services"	>

	<div class="msx-flex-grow msx-p-2 md:msx-order-1 msx-w-full">
		<header>

							<div class="msx-flex msx-flex-col md:msx-flex-row msx-w-full">
					<!-- category -->
					<p class="msx-text-sm msx-m-0 msx-pb-1 msx-links msx-links--current-color msx-text-gray-70 md:msx-pr-1">
						<a href="https://azure.microsoft.com/de-de/blog/category/uncategorized/" rel="category tag">Uncategorized</a>, <a href="https://azure.microsoft.com/de-de/blog/product/media-services/" rel="category tag">media-services</a>					</p>
				</div>
			
			<!--title-->
			<h3 itemprop="headline" class="msx-break-words msx-text-base msx-m-0 msx-w-full">
				<a
					href="https://azure.microsoft.com/de-de/blog/get-video-insights-in-even-more-languages/"
					rel="bookmark"
					itemprop="mainEntityOfPage"
					class="msx-link msx-link--icon"
					data-bi-id="area-blog-index-clicked-relatedpost"
					data-bi-cn="Get video insights in (even) more languages!"
					data-bi-an="body"
					data-bi-tn="undefined"
				>
					<span>Get video insights in (even) more languages!</span> <span aria-hidden="true" class="msx-fluent-icons">chevron_right</span>
				</a>
			</h3>
		</header>
	</div>

</article><!-- #post-4486 -->
							</li>
																											<li class="msx-flex msx-py-base md:msx-w-1/4 md:msx-py-0 md:msx-px-base">
								
<article
	itemscope
	itemtype="http://schema.org/Article"
	class="msx-rounded msx-shadow-4 msx-flex msx-flex-col msx-items-start msx-bg-white md:msx-flex-row md:msx-justify-start msx-w-full post-6220 post type-post status-publish format-standard hentry category-uncategorized tag-media-services-cdn product-media-services"	>

	<div class="msx-flex-grow msx-p-2 md:msx-order-1 msx-w-full">
		<header>

							<div class="msx-flex msx-flex-col md:msx-flex-row msx-w-full">
					<!-- category -->
					<p class="msx-text-sm msx-m-0 msx-pb-1 msx-links msx-links--current-color msx-text-gray-70 md:msx-pr-1">
						<a href="https://azure.microsoft.com/de-de/blog/category/uncategorized/" rel="category tag">Uncategorized</a>, <a href="https://azure.microsoft.com/de-de/blog/product/media-services/" rel="category tag">media-services</a>					</p>
				</div>
			
			<!--title-->
			<h3 itemprop="headline" class="msx-break-words msx-text-base msx-m-0 msx-w-full">
				<a
					href="https://azure.microsoft.com/de-de/blog/build-2018-video-indexer-updates/"
					rel="bookmark"
					itemprop="mainEntityOfPage"
					class="msx-link msx-link--icon"
					data-bi-id="area-blog-index-clicked-relatedpost"
					data-bi-cn="Build 2018: Video Indexer updates"
					data-bi-an="body"
					data-bi-tn="undefined"
				>
					<span>Build 2018: Video Indexer updates</span> <span aria-hidden="true" class="msx-fluent-icons">chevron_right</span>
				</a>
			</h3>
		</header>
	</div>

</article><!-- #post-6220 -->
							</li>
																											<li class="msx-flex msx-py-base md:msx-w-1/4 md:msx-py-0 md:msx-px-base">
								
<article
	itemscope
	itemtype="http://schema.org/Article"
	class="msx-rounded msx-shadow-4 msx-flex msx-flex-col msx-items-start msx-bg-white md:msx-flex-row md:msx-justify-start msx-w-full post-6378 post type-post status-publish format-standard hentry category-uncategorized tag-cognitive-services tag-media-services-cdn product-media-services"	>

	<div class="msx-flex-grow msx-p-2 md:msx-order-1 msx-w-full">
		<header>

							<div class="msx-flex msx-flex-col md:msx-flex-row msx-w-full">
					<!-- category -->
					<p class="msx-text-sm msx-m-0 msx-pb-1 msx-links msx-links--current-color msx-text-gray-70 md:msx-pr-1">
						<a href="https://azure.microsoft.com/de-de/blog/category/uncategorized/" rel="category tag">Uncategorized</a>, <a href="https://azure.microsoft.com/de-de/blog/product/media-services/" rel="category tag">media-services</a>					</p>
				</div>
			
			<!--title-->
			<h3 itemprop="headline" class="msx-break-words msx-text-base msx-m-0 msx-w-full">
				<a
					href="https://azure.microsoft.com/de-de/blog/brand-detection-in-microsoft-video-indexer/"
					rel="bookmark"
					itemprop="mainEntityOfPage"
					class="msx-link msx-link--icon"
					data-bi-id="area-blog-index-clicked-relatedpost"
					data-bi-cn="Brand Detection in Microsoft Video Indexer"
					data-bi-an="body"
					data-bi-tn="undefined"
				>
					<span>Brand Detection in Microsoft Video Indexer</span> <span aria-hidden="true" class="msx-fluent-icons">chevron_right</span>
				</a>
			</h3>
		</header>
	</div>

</article><!-- #post-6378 -->
							</li>
																	</ul>
				</div>
			</div>
		
						
			<div class="msx-bg-gray-20">
				<div class="msx-px-1 msx-mx-auto msx-max-w-4xl msx-pb-3 md:msx-pb-5">
					<hr class="msx-m-0 msx-border-0 msx-border-b msx-border-gray-50">
					<h2 class="msx-text-lg msx-py-3 md:msx-py-5 md:msx-text-center md:msx-text-xl">
						Join the conversation					</h2>
									</div>
			</div>

					
		
	</main>










<footer id="azure-footer" class="azure-footer-nav acom-nav-service de-de" data-module="footer">
            <div class="azure-footer-nav__pre-nav azure-footer-row">
                <h2 class="show-for-sr">Zusätzliche Navigation</h2>
                <a data-bi-id="azure-mobile-app" href="/de-de/get-started/azure-portal/mobile-app/" class="azure-footer-nav__azure-app">
                    <span class="icon icon-size2"><svg aria-hidden="true" role="presentation" data-slug-id="azure" viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <linearGradient id="azure_ab40b385-f958-420f-bfab-714be1677426-9d2407bd" x1="-960.606" y1="283.397" x2="-1032.511" y2="70.972" gradientTransform="matrix(1 0 0 -1 1075 318)" gradientUnits="userSpaceOnUse">
      <stop offset="0" stop-color="#114a8b"/>
      <stop offset="1" stop-color="#0669bc"/>
    </linearGradient>
    <linearGradient id="azure_f40af90d-72eb-49b3-94b2-2510f1071722-3e7e8126" x1="-938.144" y1="184.402" x2="-954.778" y2="178.778" gradientTransform="matrix(1 0 0 -1 1075 318)" gradientUnits="userSpaceOnUse">
      <stop offset="0" stop-opacity=".3"/>
      <stop offset=".071" stop-opacity=".2"/>
      <stop offset=".321" stop-opacity=".1"/>
      <stop offset=".623" stop-opacity=".05"/>
      <stop offset="1" stop-opacity="0"/>
    </linearGradient>
    <linearGradient id="azure_e382d742-7d51-4974-a256-24e182eef053-a7309062" x1="-947.292" y1="289.594" x2="-868.363" y2="79.308" gradientTransform="matrix(1 0 0 -1 1075 318)" gradientUnits="userSpaceOnUse">
      <stop offset="0" stop-color="#3ccbf4"/>
      <stop offset="1" stop-color="#2892df"/>
    </linearGradient>
  </defs>
  <path d="M89.158 18.266h69.238L86.523 231.224a11.041 11.041 0 01-10.461 7.51H22.179a11.023 11.023 0 01-10.445-14.548l66.963-198.41a11.04 11.04 0 0110.461-7.51z" fill="url(#azure_ab40b385-f958-420f-bfab-714be1677426-9d2407bd)"/>
  <path d="M189.77 161.104H79.976a5.083 5.083 0 00-3.468 8.8l70.552 65.847a11.091 11.091 0 007.567 2.983h62.167z" fill="#0078d4"/>
  <path d="M89.158 18.266a10.95 10.95 0 00-10.483 7.654L11.817 224.006a11.01 11.01 0 0010.393 14.728h55.274a11.814 11.814 0 009.069-7.714l13.33-39.29 47.625 44.418a11.267 11.267 0 007.089 2.586h61.937l-27.166-77.63-79.19.018 48.47-142.856z" fill="url(#azure_f40af90d-72eb-49b3-94b2-2510f1071722-3e7e8126)"/>
  <path d="M177.592 25.764a11.023 11.023 0 00-10.444-7.498H89.984a11.024 11.024 0 0110.445 7.498l66.967 198.421a11.024 11.024 0 01-10.445 14.549h77.164a11.024 11.024 0 0010.444-14.549z" fill="url(#azure_e382d742-7d51-4974-a256-24e182eef053-a7309062)"/>
</svg></span>
                    <span class="text-heading6">Mobile Azure-App erhalten</span>
                </a>
                <ul class="azure-footer-nav__social">

                        <li>
                            <a data-bi-id="social-share-instagram" href="https://www.instagram.com/microsoftdeveloper/" aria-label="Folgen Sie Microsoft-Entwickler auf Instagram"><svg aria-hidden="true" role="presentation" data-slug-id="instagram-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 25">
<path d="M11.94.34C8.7.34 8.3.36 7.02.42a8.73 8.73 0 00-2.9.55c-.79.31-1.45.72-2.12 1.39A5.89 5.89 0 00.63 4.48c-.3.77-.5 1.64-.56 2.92A85.55 85.55 0 000 12.34c0 3.26.01 3.67.07 4.95.06 1.28.26 2.15.56 2.92.3.78.71 1.45 1.37 2.12a5.85 5.85 0 002.12 1.38c.76.3 1.63.5 2.9.56 1.27.06 1.68.07 4.92.07 3.25 0 3.65 0 4.93-.07a8.73 8.73 0 002.9-.56c.78-.3 1.45-.71 2.11-1.38a5.89 5.89 0 001.38-2.12c.3-.77.5-1.64.55-2.92.06-1.28.08-1.69.08-4.95 0-3.25-.02-3.66-.08-4.94a8.84 8.84 0 00-.55-2.92 5.89 5.89 0 00-1.38-2.12A5.85 5.85 0 0019.77.97c-.76-.3-1.63-.5-2.9-.55a84.32 84.32 0 00-4.93-.08zm0 2.17c3.2 0 3.57 0 4.83.07 1.16.05 1.8.25 2.22.41.55.22.95.48 1.37.9.42.42.68.82.9 1.38.16.42.35 1.06.4 2.23.06 1.26.07 1.64.07 4.84s0 3.59-.07 4.85a6.67 6.67 0 01-.4 2.23c-.22.56-.48.96-.9 1.38a3.7 3.7 0 01-1.37.9c-.42.16-1.06.36-2.22.41a82.5 82.5 0 01-4.83.07 82.5 82.5 0 01-4.82-.07 6.58 6.58 0 01-2.22-.41 3.7 3.7 0 01-1.37-.9 3.72 3.72 0 01-.9-1.38 6.67 6.67 0 01-.4-2.23 83.68 83.68 0 01-.08-4.85c0-3.2.01-3.58.07-4.84.05-1.17.25-1.81.41-2.23.22-.56.48-.96.9-1.38a3.7 3.7 0 011.37-.9 6.58 6.58 0 012.22-.41 82.5 82.5 0 014.82-.07z" /><path d="M11.94 16.34a4 4 0 01-3.98-4 3.99 3.99 0 113.98 4zm0-10.16a6.15 6.15 0 00-6.13 6.16c0 3.4 2.75 6.17 6.13 6.17a6.15 6.15 0 006.14-6.17c0-3.4-2.75-6.16-6.14-6.16zM19.75 5.94a1.44 1.44 0 11-2.87 0 1.44 1.44 0 012.87 0" />
</svg></a>
                        </li>

                        <li>
                            <a data-bi-id="social-share-linkedin" href="https://www.linkedin.com/showcase/microsoft-azure/" aria-label="Microsoft Azure auf LinkedIn folgen"><svg aria-hidden="true" role="presentation" data-slug-id="linkedin-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.63 1C1.73 1 1 1.7 1 2.58v18.84C1 22.3 1.73 23 2.63 23h18.74c.9 0 1.63-.7 1.63-1.58V2.58A1.6 1.6 0 0021.37 1H2.63zm5.04 8.48v9.94H4.35V9.48h3.32zm.22-3.07c0 .95-.72 1.72-1.88 1.72h-.02c-1.12 0-1.84-.77-1.84-1.72 0-.98.74-1.72 1.88-1.72s1.84.74 1.86 1.72zm4.94 13H9.51c0-.05.04-9 0-9.93h3.32v1.4a3.3 3.3 0 013-1.63c2.18 0 3.82 1.42 3.82 4.47v5.7h-3.32V14.1c0-1.33-.48-2.24-1.68-2.24-.92 0-1.47.61-1.71 1.2-.09.22-.1.51-.1.8v5.56zm-3.32 0z" />
</svg></a>
                        </li>

                </ul>
            </div>
        <div class="azure-footer-nav__columns azure-footer-row">
<div class="azure-footer-nav__column">
    <button data-bi-id="explore-azure-expand" data-bi-slot="1" type="button" class="text-heading6 azure-footer-nav__toggle hide-for-large" aria-expanded="false" aria-controls="explore-azure-expand">Azure erkunden</button>
    <h3 id="explore-azure-expand-heading" class="text-heading6 show-for-large">Azure erkunden</h3>

    <ul id="explore-azure-expand" aria-labelledby="explore-azure-expand-heading" class="azure-footer-nav__column-links">
            <li>
                <a data-bi-id="explore-azure-what-is-azure" data-bi-slot="1" href="/de-de/resources/cloud-computing-dictionary/what-is-azure/">Was ist Azure?</a>
            </li>
            <li>
                <a data-bi-id="explore-azure-get-started" data-bi-slot="2" href="/de-de/get-started/">Erste Schritte</a>
            </li>
            <li>
                <a data-bi-id="explore-azure-global-infrastructure" data-bi-slot="3" href="/de-de/explore/global-infrastructure/">Globale Infrastruktur</a>
            </li>
            <li>
                <a data-bi-id="explore-azure-datacenter-regions" data-bi-slot="4" href="/de-de/explore/global-infrastructure/geographies/">Rechenzentrumsregionen</a>
            </li>
            <li>
                <a data-bi-id="explore-azure-trust-your-cloud" data-bi-slot="5" href="/de-de/explore/trusted-cloud/">Vertrauen Sie Ihrer Cloud</a>
            </li>
            <li>
                <a data-bi-id="explore-azure-customer-enablement" data-bi-slot="6" href="/de-de/solutions/cloud-enablement/">Kundenunterstützung</a>
            </li>
            <li>
                <a data-bi-id="explore-azure-customer-stories" data-bi-slot="7" href="https://customers.microsoft.com/de-de/search?sq=&ff=story_product_categories%26%3EAzure&p=0&so=story_publish_date%20desc">Kundenreferenzen</a>
            </li>
    </ul>
</div>

<div class="azure-footer-nav__column">
    <button data-bi-id="products-and-pricing-expand" data-bi-slot="2" type="button" class="text-heading6 azure-footer-nav__toggle hide-for-large" aria-expanded="false" aria-controls="products-and-pricing-expand">Produkte und Preise</button>
    <h3 id="products-and-pricing-expand-heading" class="text-heading6 show-for-large">Produkte und Preise</h3>

    <ul id="products-and-pricing-expand" aria-labelledby="products-and-pricing-expand-heading" class="azure-footer-nav__column-links">
            <li>
                <a data-bi-id="products-and-pricing-products" data-bi-slot="1" href="/de-de/products/">Produkte</a>
            </li>
            <li>
                <a data-bi-id="products-and-pricing-pricing" data-bi-slot="2" href="/de-de/pricing/">Preise</a>
            </li>
            <li>
                <a data-bi-id="products-and-pricing-free-azure-services" data-bi-slot="3" href="/de-de/pricing/free-services/">Kostenlose Azure-Dienste</a>
            </li>
            <li>
                <a data-bi-id="products-and-pricing-flexible-purchase-options" data-bi-slot="4" href="/de-de/pricing/purchase-options/">Flexible Kaufoptionen</a>
            </li>
            <li>
                <a data-bi-id="products-and-pricing-cloud-economics" data-bi-slot="5" href="/de-de/solutions/cloud-economics/">Wirtschaftlichkeit in der Cloud</a>
            </li>
            <li>
                <a data-bi-id="products-and-pricing-optimize-your-costs" data-bi-slot="6" href="/de-de/solutions/cost-optimization/">Kosten optimieren</a>
            </li>
    </ul>
</div>

<div class="azure-footer-nav__column">
    <button data-bi-id="solutions-and-support-expand" data-bi-slot="3" type="button" class="text-heading6 azure-footer-nav__toggle hide-for-large" aria-expanded="false" aria-controls="solutions-and-support-expand">Lösungen und Support</button>
    <h3 id="solutions-and-support-expand-heading" class="text-heading6 show-for-large">Lösungen und Support</h3>

    <ul id="solutions-and-support-expand" aria-labelledby="solutions-and-support-expand-heading" class="azure-footer-nav__column-links">
            <li>
                <a data-bi-id="solutions-and-support-solutions" data-bi-slot="1" href="/de-de/solutions/">Lösungen</a>
            </li>
            <li>
                <a data-bi-id="solutions-and-support-resources-do-more-with-less" data-bi-slot="2" href="/de-de/solutions/turn-your-vision-into-impact-with-azure/">Ressourcen zur Beschleunigung des Wachstums</a>
            </li>
            <li>
                <a data-bi-id="solutions-and-support-solution-architectures" data-bi-slot="3" href="https://learn.microsoft.com/azure/architecture/browse/">Lösungsarchitekturen</a>
            </li>
            <li>
                <a data-bi-id="solutions-and-support-support" data-bi-slot="4" href="/de-de/support/">Support</a>
            </li>
            <li>
                <a data-bi-id="solutions-and-support-azure-demo-and-live-question-and-answer" data-bi-slot="5" href="/de-de/get-started/welcome-to-azure/">Azure-Demo und Live-Q&A</a>
            </li>
    </ul>
</div>

<div class="azure-footer-nav__column">
    <button data-bi-id="partners-expand" data-bi-slot="4" type="button" class="text-heading6 azure-footer-nav__toggle hide-for-large" aria-expanded="false" aria-controls="partners-expand">Partner</button>
    <h3 id="partners-expand-heading" class="text-heading6 show-for-large">Partner</h3>

    <ul id="partners-expand" aria-labelledby="partners-expand-heading" class="azure-footer-nav__column-links">
            <li>
                <a data-bi-id="partners-azure-marketplace" data-bi-slot="1" href="/de-de/marketplace/">Azure Marketplace</a>
            </li>
            <li>
                <a data-bi-id="partners-find-a-partner" data-bi-slot="2" href="/de-de/partners/">Einen Partner finden</a>
            </li>
            <li>
                <a data-bi-id="partners-join-isv" data-bi-slot="3" href="https://www.microsoft.com/isv">ISV-Erfolg beitreten</a>
            </li>
    </ul>
</div>

<div class="azure-footer-nav__column">
    <button data-bi-id="resources-expand" data-bi-slot="5" type="button" class="text-heading6 azure-footer-nav__toggle hide-for-large" aria-expanded="false" aria-controls="resources-expand">Ressourcen</button>
    <h3 id="resources-expand-heading" class="text-heading6 show-for-large">Ressourcen</h3>

    <ul id="resources-expand" aria-labelledby="resources-expand-heading" class="azure-footer-nav__column-links">
            <li>
                <a data-bi-id="resources-training-and-certification" data-bi-slot="1" href="/de-de/resources/training-and-certifications/">Schulungen und Zertifizierungen</a>
            </li>
            <li>
                <a data-bi-id="resources-documentation" data-bi-slot="2" href="https://learn.microsoft.com/azure">Dokumentation</a>
            </li>
            <li>
                <a data-bi-id="resources-blog" data-bi-slot="3" href="/de-de/blog/">Blog</a>
            </li>
            <li>
                <a data-bi-id="resources-developer-resources" data-bi-slot="4" href="/de-de/resources/developers/">Entwicklerressourcen</a>
            </li>
            <li>
                <a data-bi-id="resources-students" data-bi-slot="5" href="/de-de/resources/students/">Studenten</a>
            </li>
            <li>
                <a data-bi-id="resources-events" data-bi-slot="6" href="/de-de/resources/events/">Events und Webinare</a>
            </li>
            <li>
                <a data-bi-id="resources-white-papers-and-ebooks" data-bi-slot="7" href="/de-de/resources/research/">Analystenberichte, Whitepapers und E-Books</a>
            </li>
            <li>
                <a data-bi-id="resources-videos" data-bi-slot="8" href="/de-de/resources/videos/home/">Videos</a>
            </li>
    </ul>
</div>

<div class="azure-footer-nav__column">
    <button data-bi-id="cloud-computing-expand" data-bi-slot="6" type="button" class="text-heading6 azure-footer-nav__toggle hide-for-large" aria-expanded="false" aria-controls="cloud-computing-expand">Cloud Computing</button>
    <h3 id="cloud-computing-expand-heading" class="text-heading6 show-for-large">Cloud Computing</h3>

    <ul id="cloud-computing-expand" aria-labelledby="cloud-computing-expand-heading" class="azure-footer-nav__column-links">
            <li>
                <a data-bi-id="cloud-computing-what-is-cloud-computing" data-bi-slot="1" href="/de-de/resources/cloud-computing-dictionary/what-is-cloud-computing/">Was ist Cloud Computing?</a>
            </li>
            <li>
                <a data-bi-id="cloud-computing-what-is-cloud-migration" data-bi-slot="2" href="/de-de/resources/cloud-computing-dictionary/what-is-cloud-migration/">Was ist Cloudmigration?</a>
            </li>
            <li>
                <a data-bi-id="cloud-computing-what-are-private-public-hybrid-clouds" data-bi-slot="3" href="/de-de/resources/cloud-computing-dictionary/what-are-private-public-hybrid-clouds/">Was ist eine Hybrid Cloud?</a>
            </li>
            <li>
                <a data-bi-id="cloud-computing-what-is-artificial-intelligence" data-bi-slot="4" href="/de-de/resources/cloud-computing-dictionary/what-is-artificial-intelligence/">Was ist KI?</a>
            </li>
            <li>
                <a data-bi-id="cloud-computing-what-is-iaas" data-bi-slot="5" href="/de-de/resources/cloud-computing-dictionary/what-is-iaas/">Was ist IaaS?</a>
            </li>
            <li>
                <a data-bi-id="cloud-computing-what-is-saas" data-bi-slot="6" href="/de-de/resources/cloud-computing-dictionary/what-is-saas/">Was ist SaaS?</a>
            </li>
            <li>
                <a data-bi-id="cloud-computing-what-is-paas" data-bi-slot="7" href="/de-de/resources/cloud-computing-dictionary/what-is-paas/">Was ist PaaS?</a>
            </li>
            <li>
                <a data-bi-id="cloud-computing-what-is-devops" data-bi-slot="8" href="/de-de/resources/cloud-computing-dictionary/what-is-devops/">Was ist DevOps?</a>
            </li>
    </ul>
</div>

        </div>
    <div class="azure-footer-nav__minimum azure-footer-row">

        <div class="azure-footer-nav__actions">
                <div id="dropdown-cultures">
                    <label for="cultures-dropdown-footer">Sprache ändern</label>
                    <select class="dropdown--default" id="cultures-dropdown-footer" name="cultures-dropdown-footer">
                            <option value="en-us" lang="en-us">English (US)</option>
                            <option value="cs-cz" lang="cs-cz">Čeština</option>
                            <option value="da-dk" lang="da-dk">Dansk</option>
                            <option value="de-de" lang="de-de">Deutsch</option>
                            <option value="en-au" lang="en-au">English (Australia)</option>
                            <option value="en-ca" lang="en-ca">English (Canada)</option>
                            <option value="en-in" lang="en-in">English (India)</option>
                            <option value="en-gb" lang="en-gb">English (UK)</option>
                            <option value="es-es" lang="es-es">Español</option>
                            <option value="es-mx" lang="es-mx">Español (MX)</option>
                            <option value="fr-fr" lang="fr-fr">Français</option>
                            <option value="fr-ca" lang="fr-ca">Français (Canada)</option>
                            <option value="id-id" lang="id-id">Indonesia</option>
                            <option value="it-it" lang="it-it">Italiano</option>
                            <option value="hu-hu" lang="hu-hu">Magyar</option>
                            <option value="nb-no" lang="nb-no">Norsk</option>
                            <option value="nl-nl" lang="nl-nl">Nederlands</option>
                            <option value="pl-pl" lang="pl-pl">Polski</option>
                            <option value="pt-br" lang="pt-br">Português (Brasil)</option>
                            <option value="pt-pt" lang="pt-pt">Português</option>
                            <option value="sv-se" lang="sv-se">Svenska</option>
                            <option value="tr-tr" lang="tr-tr">Türkçe</option>
                            <option value="ru-ru" lang="ru-ru">Pусский</option>
                            <option value="ja-jp" lang="ja-jp">日本語</option>
                            <option value="ko-kr" lang="ko-kr">한국어</option>
                            <option value="zh-cn" lang="zh-cn">中文(简体)</option>
                            <option value="zh-tw" lang="zh-tw">中文(繁體)</option>
                    </select>
                </div>

            <a href="https://aka.ms/yourcaliforniaprivacychoices" class='azure-ccpa'>
                <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve">
                    <title>California Consumer Privacy Act (CCPA) Opt-Out-Symbol
                    
                    
                    
                    
                
                Ihre Datenschutzoptionen