• 6 min read

Customized Renditions and Asset trimming with Dynamic Manifest

In this post, we will review the Azure Media Services Dynamic Manifest (Asset Filters) announcement and details.

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>

	
</article><!-- #post-8018 -->
								</div>
		</main>

	<aside class="single-layout__related">
		
<section data-bi-an="Related Articles">
	<div class="container px-0">
		<h2 class="font-weight-seminormal mb-3 mb-md-4">
			Related Posts		</h2>
		<ul class="mb-0 list-unstyled row row-cols-1 row-cols-md-3">
			<li class="col d-flex mb-3">
<article class="is-entire-card-clickable msx-card h-100 msx-card--vertical msx-card--no-image" data-bi-an="Related posts">
	
	<div class="msx-card__body">
					<ul class="list-unstyled list-bullet-inline align-items-center small msx-card__meta">
										<li class="m-0 d-inline-flex align-items-center" data-bi-cn="Database">
							<a href="https://azure.microsoft.com/fr-fr/blog/tag/database/" data-bi-id="22" data-bi-ct="post categories">
								Database							</a>
						</li>
														<li class="m-0 d-inline-flex align-items-center">
					Oct 29, 2019				</li>
				<li class="m-0 d-inline-flex align-items-center">
					1 min read				</li>
			</ul>
		
					<h3 class="msx-card__title">
				<a data-bi-cn="Enabling Diagnostic Logging in Azure API for FHIR®" data-bi-id="3268" data-bi-ct="title link" data-bi-tn="content-card" href="https://azure.microsoft.com/fr-fr/blog/enabling-diagnostic-logging-in-azure-api-for-fhir/">
					<span>Enabling Diagnostic Logging in Azure API for FHIR®</span> <span class="glyph glyph-append glyph-prepend-chevron-right" aria-hidden="true"></span>
			</a>
				</a>
			</h3>
		
					<div class="msx-card__byline small">
				<span>By</span>	<a class="msx-byline__author-link" href="https://azure.microsoft.com/fr-fr/blog/author/matjaz-ladava/" data-bi-cn="Matjaz Ladava" data-bi-ct="author link" data-bi-an="Single header">Matjaz Ladava</a>, Principal Program Manager			</div>
			
			</div>
</article>
</li><li class="col d-flex mb-3">
<article class="is-entire-card-clickable msx-card h-100 msx-card--vertical msx-card--no-image" data-bi-an="Related posts">
	
	<div class="msx-card__body">
					<ul class="list-unstyled list-bullet-inline align-items-center small msx-card__meta">
										<li class="m-0 d-inline-flex align-items-center" data-bi-cn="Government">
							<a href="https://azure.microsoft.com/fr-fr/blog/tag/government/" data-bi-id="34" data-bi-ct="post categories">
								Government							</a>
						</li>
														<li class="m-0 d-inline-flex align-items-center">
					Aug 22, 2019				</li>
				<li class="m-0 d-inline-flex align-items-center">
					6 min read				</li>
			</ul>
		
					<h3 class="msx-card__title">
				<a data-bi-cn="IRAP protected compliance from infra to SAP application layer on Azure" data-bi-id="3365" data-bi-ct="title link" data-bi-tn="content-card" href="https://azure.microsoft.com/fr-fr/blog/irap-protected-compliance-from-infra-to-sap-application-layer-on-azure/">
					<span>IRAP protected compliance from infra to SAP application layer on Azure</span> <span class="glyph glyph-append glyph-prepend-chevron-right" aria-hidden="true"></span>
			</a>
				</a>
			</h3>
		
					<div class="msx-card__byline small">
				<span>By</span>	<a class="msx-byline__author-link" href="https://azure.microsoft.com/fr-fr/blog/author/sachin-ghorpade/" data-bi-cn="Sachin Ghorpade" data-bi-ct="author link" data-bi-an="Single header">Sachin Ghorpade</a>, Senior Cloud Solution Architect			</div>
			
			</div>
</article>
</li><li class="col d-flex mb-3">
<article class="is-entire-card-clickable msx-card h-100 msx-card--vertical msx-card--no-image" data-bi-an="Related posts">
	
	<div class="msx-card__body">
					<ul class="list-unstyled list-bullet-inline align-items-center small msx-card__meta">
										<li class="m-0 d-inline-flex align-items-center" data-bi-cn="Big Data">
							<a href="https://azure.microsoft.com/fr-fr/blog/tag/big-data/" data-bi-id="32" data-bi-ct="post categories">
								Big Data							</a>
						</li>
														<li class="m-0 d-inline-flex align-items-center">
					Jul 18, 2019				</li>
				<li class="m-0 d-inline-flex align-items-center">
					3 min read				</li>
			</ul>
		
					<h3 class="msx-card__title">
				<a data-bi-cn="MileIQ and Azure Event Hubs: Billions of miles streamed" data-bi-id="3421" data-bi-ct="title link" data-bi-tn="content-card" href="https://azure.microsoft.com/fr-fr/blog/mileiq-and-azure-event-hubs-billions-of-miles-streamed/">
					<span>MileIQ and Azure Event Hubs: Billions of miles streamed</span> <span class="glyph glyph-append glyph-prepend-chevron-right" aria-hidden="true"></span>
			</a>
				</a>
			</h3>
		
					<div class="msx-card__byline small">
				<span>By</span>	<a class="msx-byline__author-link" href="https://azure.microsoft.com/fr-fr/blog/author/jamal-mohammed/" data-bi-cn="Jamal Mohammed" data-bi-ct="author link" data-bi-an="Single header">Jamal Mohammed</a>, Sr. Software Engineer, Mobile Data Labs			</div>
			
			</div>
</article>
</li>		</ul>
	</div>
</section>
	</aside>
		<div class="footer-prefix-container">
		
<section class="wp-block-group alignfull has-primary-brand-gradient-background has-background is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-group is-layout-constrained wp-container-core-group-is-layout-2 wp-block-group-is-layout-constrained">
<h2 class="wp-block-heading has-text-align-center has-h-1-font-size" id="exploreazure-ai-solutions"><strong>Explore<br><span class="text-gradient">Azure AI solutions</span></strong></h2>



<div class="wp-block-group is-layout-constrained wp-container-core-group-is-layout-1 wp-block-group-is-layout-constrained">
<p class="has-text-align-center wp-block-paragraph">The future of AI starts here. Envision your next great AI app with the latest technologies. Get started with Azure.</p>



<div class="wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-1 wp-block-buttons-is-layout-flex">
<div class="wp-block-button is-style-fill"><a class="wp-block-button__link wp-element-button" href="https://azure.microsoft.com/fr-fr">Learn more about Azure</a></div>
</div>
</div>
</div>



<div class="wp-block-group is-layout-constrained wp-container-core-group-is-layout-5 wp-block-group-is-layout-constrained" style="padding-top:var(--wp--preset--spacing--2-xl)">
<div class="wp-block-group is-content-justification-center is-layout-flex wp-container-core-group-is-layout-4 wp-block-group-is-layout-flex">
<p class="has-text-align-center has-medium-font-size wp-block-paragraph">Connect with us on social</p>



<div class="wp-block-group is-content-justification-space-between is-nowrap is-layout-flex wp-container-core-group-is-layout-3 wp-block-group-is-layout-flex"><svg class="wp-block-tenup-icon" style="width: ; height: ;" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 25.07 25.41"><path fill="currentColor" d="M12.5 0A12.5 12.5 0 1 0 25 12.5C25 5.6 19.4 0 12.5 0M5.07 5.51h4.44l3.78 5.06 4.68-5.06h1.3l-5.4 5.84 6.1 8.14h-4.45L11.42 14l-5.08 5.5h-1.3l5.8-6.27zm1.92.96L16 18.53h2.04L9.03 6.47Z"/></svg>

<svg class="wp-block-tenup-icon" style="width: ; height: ;" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 24 24"><path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m4.441 16.892c-2.102.144-6.784.144-8.883 0C5.282 16.736 5.017 15.622 5 12c.017-3.629.285-4.736 2.558-4.892 2.099-.144 6.782-.144 8.883 0C18.718 7.264 18.982 8.378 19 12c-.018 3.629-.285 4.736-2.559 4.892M10 9.658l4.917 2.338L10 14.342z"/></svg>

<svg class="wp-block-tenup-icon" style="width: ; height: ;" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none"><path fill="currentColor" d="M19.927 20.283h-3.45v-5.535c0-1.305-.038-3.005-1.783-3.005-1.783 0-2.093 1.423-2.093 2.926v5.614h-3.45V8.936h3.295v1.542h.04a3.54 3.54 0 0 1 3.294-1.819c3.488 0 4.147 2.372 4.147 5.417zM5.237 7.393c-1.124 0-2.016-.909-2.016-2.055s.892-2.056 2.016-2.056 2.015.91 2.015 2.056-.891 2.056-2.015 2.056Zm1.744 12.89H3.493V8.936h3.45v11.347zM21.671 0H1.748C.818 0 .043.751.043 1.7v20.402c0 .95.775 1.74 1.705 1.7h19.885c.93 0 1.705-.75 1.744-1.7V1.7c0-.949-.775-1.7-1.706-1.7"/></svg>

<svg class="wp-block-tenup-icon" style="width: ; height: ;" xmlns="http://www.w3.org/2000/svg" width="23" height="22" fill="none" viewBox="0 0 23 22"><g fill="currentColor" clip-path="url(#a)"><path d="M11.497 2.581c2.81 0 3.142.011 4.251.062 1.026.046 1.583.218 1.954.362.458.168.872.437 1.211.787.35.34.62.754.788 1.211.144.371.315.928.362 1.954.05 1.11.061 1.442.061 4.252s-.01 3.142-.061 4.251c-.047 1.026-.218 1.583-.362 1.954a3.49 3.49 0 0 1-1.997 1.997c-.371.144-.928.315-1.954.362-1.11.05-1.442.061-4.252.061s-3.142-.01-4.251-.061c-1.026-.047-1.583-.218-1.954-.362a3.26 3.26 0 0 1-1.211-.788 3.26 3.26 0 0 1-.787-1.21c-.145-.372-.316-.929-.363-1.954-.05-1.11-.061-1.443-.061-4.252 0-2.81.01-3.142.061-4.252.047-1.026.218-1.583.363-1.954.168-.457.437-.871.787-1.21.34-.35.753-.62 1.211-.788.37-.144.928-.315 1.954-.362 1.11-.05 1.442-.061 4.251-.061zm.001-1.897c-2.857 0-3.215.012-4.338.063-1.122.052-1.886.23-2.555.491A5.2 5.2 0 0 0 2.74 2.451 5.2 5.2 0 0 0 1.53 4.315c-.262.67-.44 1.434-.491 2.554s-.064 1.48-.064 4.338.012 3.216.064 4.338c.051 1.122.229 1.884.489 2.554a5.2 5.2 0 0 0 1.213 1.863c.526.535 1.162.95 1.864 1.214.668.26 1.434.438 2.554.49 1.12.05 1.48.062 4.338.062s3.216-.012 4.338-.063c1.122-.05 1.884-.23 2.554-.489a5.38 5.38 0 0 0 3.077-3.077c.26-.668.438-1.434.489-2.554s.063-1.48.063-4.338-.012-3.216-.063-4.338c-.05-1.122-.23-1.885-.489-2.554a5.2 5.2 0 0 0-1.214-1.864 5.2 5.2 0 0 0-1.863-1.21C17.719.977 16.955.8 15.835.748s-1.48-.063-4.338-.063z"/><path d="M11.496 5.804a5.403 5.403 0 1 0 0 10.806 5.403 5.403 0 0 0 0-10.806m0 8.91a3.508 3.508 0 1 1 0-7.017 3.508 3.508 0 0 1 0 7.017M17.113 6.853a1.262 1.262 0 1 0 0-2.525 1.262 1.262 0 0 0 0 2.525"/></g><defs><clipPath id="a"><path fill="currentColor" d="M.975.644h21.05v21.09H.974z"/></clipPath></defs></svg></div>
</div>
</div>
</section>
	</div>
	<div id="footerArea" class="uhf"  data-m='{"cN":"footerArea","cT":"Area_coreuiArea","id":"a2Body","sN":2,"aN":"Body"}'>
                <div id="footerRegion"      data-region-key="footerregion" data-m='{"cN":"footerRegion","cT":"Region_coreui-region","id":"r1a2","sN":1,"aN":"a2"}' >

    <div  id="footerUniversalFooter" data-m='{"cN":"footerUniversalFooter","cT":"Module_coreui-universalfooter","id":"m1r1a2","sN":1,"aN":"r1a2"}'  data-module-id="Category|footerRegion|coreui-region|footerUniversalFooter|coreui-universalfooter">
        



<footer id="uhf-footer" class="c-uhff context-uhf"  data-uhf-mscc-rq="false" data-footer-footprint="/MSCloudBlogs/MSCloudBlogsfooter, fromService: True" data-m='{"cN":"Uhf footer_cont","cT":"Container","id":"c1m1r1a2","sN":1,"aN":"m1r1a2"}'>
        <nav class="c-uhff-nav" aria-label="Liens de ressource en pied de page" data-m='{"cN":"Footer nav_cont","cT":"Container","id":"c1c1m1r1a2","sN":1,"aN":"c1m1r1a2"}'>
            
                <div class="c-uhff-nav-row">
                    <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn1_cont","cT":"Container","id":"c1c1c1m1r1a2","sN":1,"aN":"c1c1m1r1a2"}'>
                        <div class="c-heading-4" role="heading" aria-level="2">Nouveautés
</div>
                        <ul class="c-list f-bare">
                            <li>
                                <a aria-label="Surface Pro Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/surface/devices/surface-pro-11th-edition" data-m='{"cN":"Footer_WhatsNew_NewSurfacePro_nav","id":"n1c1c1c1m1r1a2","sN":1,"aN":"c1c1c1m1r1a2"}'>Surface Pro</a>
                            </li>
                            <li>
                                <a aria-label="Surface Laptop Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/surface/devices/surface-laptop-7th-edition" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptop_nav","id":"n2c1c1c1m1r1a2","sN":2,"aN":"c1c1c1m1r1a2"}'>Surface Laptop</a>
                            </li>
                            <li>
                                <a aria-label="Surface Laptop Studio 2 Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/d/Surface-Laptop-Studio-2/8rqr54krf1dz" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptopStudio2_nav","id":"n3c1c1c1m1r1a2","sN":3,"aN":"c1c1c1m1r1a2"}'>Surface Laptop Studio 2</a>
                            </li>
                            <li>
                                <a aria-label="Surface Laptop Go 3 Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/d/Surface-Laptop-Go-3/8p0wwgj6c6l2" data-m='{"cN":"Footer_WhatsNew_SurfaceLaptopGo3_nav","id":"n4c1c1c1m1r1a2","sN":4,"aN":"c1c1c1m1r1a2"}'>Surface Laptop Go 3</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft Copilot Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/microsoft-copilot" data-m='{"cN":"Footer_WhatsNew_CopilotMicrosoft_nav","id":"n5c1c1c1m1r1a2","sN":5,"aN":"c1c1c1m1r1a2"}'>Microsoft Copilot</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft 365 Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/microsoft-365" data-m='{"cN":"Footer_WhatsNew_Microsoft365_nav","id":"n6c1c1c1m1r1a2","sN":6,"aN":"c1c1c1m1r1a2"}'>Microsoft 365</a>
                            </li>
                            <li>
                                <a aria-label="Découvrir les produits Microsoft Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/microsoft-products-and-apps" data-m='{"cN":"Footer_WhatsNew_ExploreMicrosoftProducts_nav","id":"n7c1c1c1m1r1a2","sN":7,"aN":"c1c1c1m1r1a2"}'>Découvrir les produits Microsoft</a>
                            </li>
                            <li>
                                <a aria-label="Applications Windows 11 Nouveautés
" class="c-uhff-link" href="https://www.microsoft.com/windows/windows-11-apps" data-m='{"cN":"Footer_WhatsNew_Windows_11_apps_nav","id":"n8c1c1c1m1r1a2","sN":8,"aN":"c1c1c1m1r1a2"}'>Applications Windows 11</a>
                            </li>

                        </ul>
                        
                    </div>
                    <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn2_cont","cT":"Container","id":"c2c1c1m1r1a2","sN":2,"aN":"c1c1m1r1a2"}'>
                        <div class="c-heading-4" role="heading" aria-level="2">Microsoft Store</div>
                        <ul class="c-list f-bare">
                            <li>
                                <a aria-label="Profil du compte Microsoft Store" class="c-uhff-link" href="https://account.microsoft.com/" data-m='{"cN":"Footer_StoreandSupport_AccountProfile_nav","id":"n1c2c1c1m1r1a2","sN":1,"aN":"c2c1c1m1r1a2"}'>Profil du compte</a>
                            </li>
                            <li>
                                <a aria-label="Centre de téléchargement Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/download" data-m='{"cN":"Footer_StoreandSupport_DownloadCenter_nav","id":"n2c2c1c1m1r1a2","sN":2,"aN":"c2c1c1m1r1a2"}'>Centre de téléchargement</a>
                            </li>
                            <li>
                                <a aria-label="Support du Microsoft Store Microsoft Store" class="c-uhff-link" href="https://go.microsoft.com/fwlink/?linkid=2139749" data-m='{"cN":"Footer_StoreandSupport_SalesAndSupport_nav","id":"n3c2c1c1m1r1a2","sN":3,"aN":"c2c1c1m1r1a2"}'>Support du Microsoft Store</a>
                            </li>
                            <li>
                                <a aria-label="Retours Microsoft Store" class="c-uhff-link" href="https://go.microsoft.com/fwlink/p/?LinkID=824764&clcid=0x40C" data-m='{"cN":"Footer_StoreandSupport_Returns_nav","id":"n4c2c1c1m1r1a2","sN":4,"aN":"c2c1c1m1r1a2"}'>Retours</a>
                            </li>
                            <li>
                                <a aria-label="Suivi des commandes Microsoft Store" class="c-uhff-link" href="https://account.microsoft.com/orders" data-m='{"cN":"Footer_StoreandSupport_OrderTracking_nav","id":"n5c2c1c1m1r1a2","sN":5,"aN":"c2c1c1m1r1a2"}'>Suivi des commandes</a>
                            </li>
                            <li>
                                <a aria-label="Recycler Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/store/b/recycling?icid=GlobalFooterNav" data-m='{"cN":"Footer_Recyclying_nav","id":"n6c2c1c1m1r1a2","sN":6,"aN":"c2c1c1m1r1a2"}'>Recycler</a>
                            </li>
                            <li>
                                <a aria-label="Garanties Microsoft Store" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/store/b/aboutwarranties?icid=GlobalFooterNav" data-m='{"cN":"Footer_Warranties_nav","id":"n7c2c1c1m1r1a2","sN":7,"aN":"c2c1c1m1r1a2"}'>Garanties</a>
                            </li>

                        </ul>
                        
                    </div>
                    <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn3_cont","cT":"Container","id":"c3c1c1m1r1a2","sN":3,"aN":"c1c1m1r1a2"}'>
                        <div class="c-heading-4" role="heading" aria-level="2">Éducation</div>
                        <ul class="c-list f-bare">
                            <li>
                                <a aria-label="Microsoft Éducation Éducation" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/education" data-m='{"cN":"Footer_Education_MicrosoftInEducation_nav","id":"n1c3c1c1m1r1a2","sN":1,"aN":"c3c1c1m1r1a2"}'>Microsoft Éducation</a>
                            </li>
                            <li>
                                <a aria-label="Appareils pour l’enseignement Éducation" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/education/devices/overview" data-m='{"cN":"Footer_Education_DevicesforEducation_nav","id":"n2c3c1c1m1r1a2","sN":2,"aN":"c3c1c1m1r1a2"}'>Appareils pour l’enseignement</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft Teams pour l’éducation Éducation" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/education/products/teams" data-m='{"cN":"Footer_Education_MicrosoftTeamsforEducation_nav","id":"n3c3c1c1m1r1a2","sN":3,"aN":"c3c1c1m1r1a2"}'>Microsoft Teams pour l’éducation</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft 365 Éducation Éducation" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/education/products/microsoft-365" data-m='{"cN":"Footer_Education_Microsoft365Education_nav","id":"n4c3c1c1m1r1a2","sN":4,"aN":"c3c1c1m1r1a2"}'>Microsoft 365 Éducation</a>
                            </li>
                            <li>
                                <a aria-label="Office Éducation Éducation" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/education/products/office" data-m='{"cN":"Footer_Education_Office Education_nav","id":"n5c3c1c1m1r1a2","sN":5,"aN":"c3c1c1m1r1a2"}'>Office Éducation</a>
                            </li>
                            <li>
                                <a aria-label="Formation et développement des enseignants Éducation" class="c-uhff-link" href="https://education.microsoft.com/" data-m='{"cN":"Footer_Education_EducatorTrainingDevelopment_nav","id":"n6c3c1c1m1r1a2","sN":6,"aN":"c3c1c1m1r1a2"}'>Formation et développement des enseignants</a>
                            </li>
                            <li>
                                <a aria-label="Offres pour étudiants et parents Éducation" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/store/b/student" data-m='{"cN":"Footer_Education_DealsForStudentsandParents_nav","id":"n7c3c1c1m1r1a2","sN":7,"aN":"c3c1c1m1r1a2"}'>Offres pour étudiants et parents</a>
                            </li>
                            <li>
                                <a aria-label="Azure pour les étudiants Éducation" class="c-uhff-link" href="https://azure.microsoft.com/fr-fr/free/students/" data-m='{"cN":"Footer_Education_Azureforstudents_nav","id":"n8c3c1c1m1r1a2","sN":8,"aN":"c3c1c1m1r1a2"}'>Azure pour les étudiants</a>
                            </li>

                        </ul>
                        
                    </div>
                </div>
                <div class="c-uhff-nav-row">
                    <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn4_cont","cT":"Container","id":"c4c1c1m1r1a2","sN":4,"aN":"c1c1m1r1a2"}'>
                        <div class="c-heading-4" role="heading" aria-level="2">Entreprises</div>
                        <ul class="c-list f-bare">
                            <li>
                                <a aria-label="Microsoft Cloud Entreprises" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/microsoft-cloud" data-m='{"cN":"Footer_Business_Microsoft_Cloud_nav","id":"n1c4c1c1m1r1a2","sN":1,"aN":"c4c1c1m1r1a2"}'>Microsoft Cloud</a>
                            </li>
                            <li>
                                <a aria-label="Sécurité Microsoft Entreprises" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/security" data-m='{"cN":"Footer_Business_Microsoft Security_nav","id":"n2c4c1c1m1r1a2","sN":2,"aN":"c4c1c1m1r1a2"}'>Sécurité Microsoft</a>
                            </li>
                            <li>
                                <a aria-label="Azure Entreprises" class="c-uhff-link" href="https://azure.microsoft.com/fr-fr/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftAzure_nav","id":"n3c4c1c1m1r1a2","sN":3,"aN":"c4c1c1m1r1a2"}'>Azure</a>
                            </li>
                            <li>
                                <a aria-label="Dynamics 365 Entreprises" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/dynamics-365" data-m='{"cN":"Footer_Business_MicrosoftDynamics365_nav","id":"n4c4c1c1m1r1a2","sN":4,"aN":"c4c1c1m1r1a2"}'>Dynamics 365</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft 365 Entreprises" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/microsoft-365/business" data-m='{"cN":"Footer_Business_M365_nav","id":"n5c4c1c1m1r1a2","sN":5,"aN":"c4c1c1m1r1a2"}'>Microsoft 365</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft 365 Copilot Entreprises" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/microsoft-365/copilot/copilot-for-work" data-m='{"cN":"Footer_CopilotMicrosoft365_nav","id":"n6c4c1c1m1r1a2","sN":6,"aN":"c4c1c1m1r1a2"}'>Microsoft 365 Copilot</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft Teams Entreprises" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/microsoft-teams/group-chat-software" data-m='{"cN":"Footer_Business_Microsoft365_nav","id":"n7c4c1c1m1r1a2","sN":7,"aN":"c4c1c1m1r1a2"}'>Microsoft Teams</a>
                            </li>
                            <li>
                                <a aria-label="TPE & PME Entreprises" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/store/b/business" data-m='{"cN":"Footer_Business-SmallBusiness_nav","id":"n8c4c1c1m1r1a2","sN":8,"aN":"c4c1c1m1r1a2"}'>TPE & PME</a>
                            </li>

                        </ul>
                        
                    </div>
                    <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn5_cont","cT":"Container","id":"c5c1c1m1r1a2","sN":5,"aN":"c1c1m1r1a2"}'>
                        <div class="c-heading-4" role="heading" aria-level="2">Développeur et IT</div>
                        <ul class="c-list f-bare">
                            <li>
                                <a aria-label="Centre pour les développeurs Développeur et IT" class="c-uhff-link" href="https://developer.microsoft.com/fr-fr/" data-m='{"cN":"Footer_DeveloperAndIT_DeveloperCenter_nav","id":"n1c5c1c1m1r1a2","sN":1,"aN":"c5c1c1m1r1a2"}'>Centre pour les développeurs</a>
                            </li>
                            <li>
                                <a aria-label="Documentation Développeur et IT" class="c-uhff-link" href="https://learn.microsoft.com/docs/" data-m='{"cN":"Footer_DeveloperAndIT_Documentation_nav","id":"n2c5c1c1m1r1a2","sN":2,"aN":"c5c1c1m1r1a2"}'>Documentation</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft Learn Développeur et IT" class="c-uhff-link" href="https://learn.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftLearn_nav","id":"n3c5c1c1m1r1a2","sN":3,"aN":"c5c1c1m1r1a2"}'>Microsoft Learn</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft Tech Community Développeur et IT" class="c-uhff-link" href="https://techcommunity.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftTechCommunity_nav","id":"n4c5c1c1m1r1a2","sN":4,"aN":"c5c1c1m1r1a2"}'>Microsoft Tech Community</a>
                            </li>
                            <li>
                                <a aria-label="Place de marché Azure Développeur et IT" class="c-uhff-link" href="https://azuremarketplace.microsoft.com/fr-fr/" data-m='{"cN":"Footer_DeveloperAndIT_AzureMarketplace_nav","id":"n5c5c1c1m1r1a2","sN":5,"aN":"c5c1c1m1r1a2"}'>Place de marché Azure</a>
                            </li>
                            <li>
                                <a aria-label="AppSource Développeur et IT" class="c-uhff-link" href="https://appsource.microsoft.com/fr-fr/" data-m='{"cN":"Footer_DeveloperAndIT_AppSource_nav","id":"n6c5c1c1m1r1a2","sN":6,"aN":"c5c1c1m1r1a2"}'>AppSource</a>
                            </li>
                            <li>
                                <a aria-label="Microsoft Power Platform Développeur et IT" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/power-platform" data-m='{"cN":"Footer_DeveloperAndIT_Power Platform_nav","id":"n7c5c1c1m1r1a2","sN":7,"aN":"c5c1c1m1r1a2"}'>Microsoft Power Platform</a>
                            </li>
                            <li>
                                <a aria-label="Visual Studio Développeur et IT" class="c-uhff-link" href="https://visualstudio.microsoft.com/" data-m='{"cN":"Footer_DeveloperAndIT_MicrosoftVisualStudio_nav","id":"n8c5c1c1m1r1a2","sN":8,"aN":"c5c1c1m1r1a2"}'>Visual Studio</a>
                            </li>

                        </ul>
                        
                    </div>
                    <div class="c-uhff-nav-group" data-m='{"cN":"footerNavColumn6_cont","cT":"Container","id":"c6c1c1m1r1a2","sN":6,"aN":"c1c1m1r1a2"}'>
                        <div class="c-heading-4" role="heading" aria-level="2">Société
</div>
                        <ul class="c-list f-bare">
                            <li>
                                <a aria-label="Emploi Société
" class="c-uhff-link" href="https://careers.microsoft.com/" data-m='{"cN":"Footer_Company_Careers_nav","id":"n1c6c1c1m1r1a2","sN":1,"aN":"c6c1c1m1r1a2"}'>Emploi</a>
                            </li>
                            <li>
                                <a aria-label="Actualités de la société Société
" class="c-uhff-link" href="https://news.microsoft.com/fr-fr" data-m='{"cN":"Footer_Company_CompanyNews_nav","id":"n2c6c1c1m1r1a2","sN":2,"aN":"c6c1c1m1r1a2"}'>Actualités de la société</a>
                            </li>
                            <li>
                                <a aria-label="Confidentialité chez Microsoft Société
" class="c-uhff-link" href="https://privacy.microsoft.com/fr-fr" data-m='{"cN":"Footer_Company_PrivacyAtMicrosoft_nav","id":"n3c6c1c1m1r1a2","sN":3,"aN":"c6c1c1m1r1a2"}'>Confidentialité chez Microsoft</a>
                            </li>
                            <li>
                                <a aria-label="Investisseurs Société
" class="c-uhff-link" href="https://www.microsoft.com/investor/default.aspx" data-m='{"cN":"Footer_Company_Investors_nav","id":"n4c6c1c1m1r1a2","sN":4,"aN":"c6c1c1m1r1a2"}'>Investisseurs</a>
                            </li>
                            <li>
                                <a aria-label="Durabilité Société
" class="c-uhff-link" href="https://www.microsoft.com/fr-fr/sustainability/" data-m='{"cN":"Footer_Company_Sustainability_nav","id":"n5c6c1c1m1r1a2","sN":5,"aN":"c6c1c1m1r1a2"}'>Durabilité</a>
                            </li>

                        </ul>
                        
                    </div>
                </div>
        </nav>
    <div class="c-uhff-base">
                <a id="locale-picker-link" aria-label="Sélecteur de langue du contenu. Actuellement défini sur Français (France)" class="c-uhff-link c-uhff-lang-selector c-glyph glyph-world" href="http://www.microsoft.com/en-us/locale.aspx" data-m='{"cN":"locale_picker(FR)_nav","id":"n7c1c1m1r1a2","sN":7,"aN":"c1c1m1r1a2"}'>Français (France)</a>

            <a data-m='{"id":"n8c1c1m1r1a2","sN":8,"aN":"c1c1m1r1a2"}' href="https://aka.ms/yourcaliforniaprivacychoices" class='c-uhff-link c-uhff-ccpa'>
        <svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 14" xml:space="preserve" height="16" width="43">
            <title>Vos choix en matière de confidentialité – Icône Désactiver
            
            
            
            
        
        Vos choix de confidentialité
    

        
            
        Confidentialité de l’intégrité des consommateurs