Multimédia

Développez une application pour aider les utilisateurs à créer et vivre des expériences multimédias passionnantes. Ces tâches sont facilitées dans Windows 8.1, avec de nouvelles propriétés pour capturer du contenu multimédia dans différents environnements, un moyen simple d’ajouter des contrôles de lecture aux applications qui utilisent le langage XAML (Extensible Application Markup Language) et une prise en charge native de la spécification MSE (Media Source Extensions) pour la lecture HTML5.

Mis à jour dans Windows 8.1

  • Fonctionnalité de traitement vidéo
  • Fonctionnalité de capture audio et vidéo
  • XAML MediaElement
  • Vidéo et audio HTML5
  • Fonctionnalité Lire sur

Mises à jour des fonctionnalités de traitement vidéo

[Consultez l’exemple de hub multimédia et l’exemple MediaStreamSource maintenant.]

Windows 8.1 introduit de nouvelles mises à jour et une nouvelle prise en charge associées aux formats, codecs et traitement vidéo.

Prise en charge CFF

Microsoft Media Foundation a ajouté la prise en charge du format CFF (Common File Format) à ses implémentations MP4/fMP4. CFF est un format de conteneur audio/vidéo basé sur le format ISO Base Media File Format.

Nouveau mode XVP

Le processeur XVP (Transcode Video Processor) de Media Foundation a ajouté le mode MrfCrf444, qui s’exécute toujours de façon logicielle et n’utilise pas l’accélération matérielle DXVA (DirectX Video Acceleration). Cela garantit des résultats cohérents sur l’ensemble des plateformes, indépendamment du matériel sous-jacent. Comme le mode MrfCrf444 s’exécute entièrement de façon logicielle, l’opération de transcodage peut prendre plus longtemps et utiliser plus d’énergie. Ce nouveau mode impose l’utilisation de filtres plus larges, utilise une précision totale pour la conversion des couleurs, préfère les formats de couleurs de qualité supérieure et permet de profiter d’un désentrelaceur de haute qualité.

Vous pouvez l’utiliser dans votre application en affectant à la propriété MediaTrancoder.VideoProcessingAlgorithm la valeur MediaVideoProcessingAlgorithm.mrfCrf444.

// sourceFile and destFile are IStorageFile objects defined elsewhere.

var profile = Windows.Media.MediaProperties.MediaEncodingProfile.createMp4
    (Windows.Media.MediaProperties.VideoEncodingQuality.hd720p); 

var transcoder = new Windows.Media.Transcoding.MediaTranscoder(); 

transcoder.videoProcessingAlgorithm = 
    Windows.Media.Transcoding.MediaVideoProcessingAlgorithm.mrfCrf444; 

transcoder.prepareFileTranscodeAsync(sourceFile, destFile, profile); 
using Windows.Media.MediaProperties;
using Windows.Media.Transcoding;

var transcoder = new MediaTranscoder(); 
var profile = MediaEncodingProfile.CreateMp4(
    MediaProperties.VideoEncodingQuality.HD720p); 

transcoder.videoProcessingAlgorithm = 
    MediaVideoProcessingAlgorithm.MrfCrf444; 

// _InputFile and _OutFile are defined outside this example.
transcoder.PrepareFileTranscodeAsync(_InputFile, _OutputFile, profile); 

Prise en charge de la plage étendue YUV dans Media Foundation

Dans Windows 8, le pipeline Media Foundation utilisait par défaut la plage YUV limitée [Y : 16-235] et ne permettait pas de signaler que l’entrée figurait dans la plage YUV étendue [Y : 0-255]. Le pipeline Media Foundation peut à présent signaler la plage étendue à l’unité centrale graphique (GPU). Ceci permet au pipeline Media Foundation complet, y compris au décodeur MJPEG, de prendre en charge la plage étendue.

L’attribut MF_MT_VIDEO_NOMINAL_RANGE permet de spécifier la plage YUV limitée ou étendue pour le contenu.

Media Stream Source

Windows 8.1 introduit une nouvelle source multimédia générique pour les applications du Windows Store, appelée Media Stream Source (MSS). Les API pour cette technologie figurent dans l’espace de noms Windows.Media.Core et la classe principale de source multimédia est MediaStreamSource. La source MSS permet aux applications d’envoyer des échantillons audio et vidéo compressés et non compressés au pipeline multimédia pour lecture, transcodage ou diffusion en continu. Des échantillons multimédias peuvent être générés dynamiquement par l’application ou démultiplexés à partir d’un flux ou de fichiers. Cette flexibilité permet aux applications d’étendre plus facilement la prise en charge de la plateforme aux nouveaux formats multimédias et de résoudre des problèmes complexes, tels que la diffusion en continu adaptative ou l’implémentation d’une source multimédia personnalisée dans du code managé.

Les API MediaStreamSource sont très semblables aux API Microsoft Silverlight du même nom. De ce fait, les développeurs qui connaissent les versions Silverlight de ces API peuvent appliquer leurs connaissances pour créer des applications du Windows Store à l’aide de la source MSS.

Il est possible d’utiliser la source MSS avec les objets audio et video dans les applications du Windows Store en JavaScript, les objets MediaElement dans les applications du Windows Store en C++, C# ou Visual Basic, et avec MediaTranscoder.

Voici quelques-unes des principales API MSS. L’ordre reflète le flux de base selon lequel la source MSS fonctionne. Vous remarquerez que MediaStreamSource envoie des objets de demande à l’application via des arguments d’événement. Ces objets de demande permettent à l’application d’interagir avec MediaStreamSource et de lui repasser les données.

API Description
MediaStreamSource Représente une source multimédia qui fournit des échantillons multimédias directement au pipeline multimédia. MediaStreamSource consomme les objets MediaStreamSample qui sont fournis par l’application.
MediaStreamSample Représente un échantillon multimédia utilisé par MediaStreamSource.
MediaStreamSource.Starting (événement)

MediaStreamSource utilise cet événement pour notifier à l’application qu’elle est prête à commencer le traitement des données multimédias.

MediaStreamSourceStartingRequest

Représente une demande de MediaStreamSource indiquant qu’il est prêt à traiter les données multimédias.

Les applications doivent répondre aussi tôt que possible à cette demande en appelant SetActualStartPosition. Si une application a besoin de retarder le traitement des données par MediaStreamSource, elle peut obtenir un report asynchrone en appelant MediaStreamSourceStartingRequest.GetDeferral. Lorsque l’application est prête au démarrage de MediaStreamSource, elle appelle Complete sur l’objet de report.

L’accès à la demande de démarrage s’effectue via les objets MediaStreamSourceStartingEventArgs qui sont transmis au gestionnaire d’événements MediaStreamSource.Starting.

MediaStreamSource.SampleRequested (événement)

MediaStreamSource utilise cet événement pour notifier l’application qu’elle est prête pour un MediaStreamSample.

Les applications sont tenues d’inscrire un gestionnaire pour cet événement.

MediaStreamSourceSampleRequest

Représente une demande provenant de MediaStreamSource pour obtenir un nouvel échantillon multimédia. La définition de la propriété Sample sur le nouvel échantillon MediaStreamSample déclenche la récupération de l’échantillon multimédia par MediaStreamSource et la poursuite du traitement des données multimédias.

Les applications doivent répondre aussi tôt que possible à cette demande. Si une application a besoin de temps avant l’envoi de MediaStreamSample, elle peut obtenir un report asynchrone en appelant MediaStreamSourceSampleRequest.GetDeferral. Une fois que l’application a terminé avec le report, elle appelle Complete sur l’objet de report.

L’accès à la demande d’échantillon s’effectue via les objets MediaStreamSourceSampleRequestedEventArgs qui sont transmis au gestionnaire d’événements MediaStreamSource.SampleRequest.

L’application indique qu’elle a atteint la fin du flux en répondant à une demande MediaStreamSourceSampleRequest sans fournir de MediaStreamSample ou en affectant à la propriété MediaStreamSourceSampleRequest.Sample la valeur null.

MediaStreamSource.Closed (événement)

La source MediaStreamSource utilise cet événement pour notifier l’application qu’elle s’est fermée.

MediaStreamSourceClosedRequest

Représente une demande provenant de MediaStreamSourceindiquant qu’elle s’est fermée.

L’accès à la demande de fermeture s’effectue via les objets MediaStreamSourceClosedEventArgs qui sont transmis au gestionnaire d’événements MediaStreamSource.Closed.

MediaElement.SetMediaStreamSource Définit la source de l’objet MediaElement sur un objet MediaStreamSource.

 

Pour consulter un exemple détaillé de l’utilisation de MSS, obtenez l’exemple MediaStreamSource.

Mises à jour de la capture audio et vidéo

[Obtenir les exemples Capture multimédia et Découverte d’effets audio maintenant.]

Windows 8.1 introduit de nombreuses mises à jour des fonctionnalités de capture audio et vidéo.

Mode de séquence de photos

Le mode de séquence de photos permet de capturer une séquence continue de photos. Vous configurez ce mode en utilisant la classe LowLagPhotoSequenceControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Utilisez la propriété LowLagPhotoSequenceControl.Supported pour déterminer si un appareil prend en charge le mode de séquence de photos.

Un scénario clé mettant en jeu le mode de séquence de photos consiste à obtenir des photos dans le passé, c’est-à-dire avant que l’utilisateur prenne une photo. Vous pouvez utiliser PhotoCapturedEventArgs.CaptureTimeOffset pour indiquer si une image se trouvait dans le futur ou le passé. Une valeur supérieure à 0 indique le futur, alors qu’une valeur inférieure à 0 indique le passé.

Pour démarrer ce mode, appelez MediaCapture.PrepareLowLagPhotoSequenceCaptureAsync. Pour commencer à capturer des photos, appelez StartAsync. Votre application continuera à recevoir des photos de l’appareil jusqu’à ce que l’opération soit arrêtée. Pour arrêter la capture des photos, appelez StopAsync.

Si votre application souhaite définir le nombre d’images qu’elle obtient par seconde, elle peut utiliser LowLagPhotoSequence.PhotosPerSecondLimit. Cela peut être utile si le capteur sur l’appareil peut traiter 30 images par seconde (fps), alors que l’application a besoin de seulement 4 images par seconde.

Prise en charge des miniatures

Les miniatures sont prises en charge pour les photos individuelles et pour les opérations de séquence de photos via les classes LowLagPhotoControl et LowLagPhotoSequenceControl, auxquelles vous accédez via la propriété MediaCapture.VideoDeviceController.

Pour activer les miniatures, affectez à la propriété ThumbnailEnabled la valeur true. Vous pouvez définir la taille de la miniature que vous voulez en utilisant DesiredThumbnailSize et définir le format avec ThumbnailFormat.

Mode de scène

Le mode de scène règle le post-traitement des images capturées pour qu’elles correspondent mieux à la scène en cours d’enregistrement. Vous configurez ce mode en utilisant la classe SceneModeControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

La propriété SupportedModes indique quels modes Scènes (tels que Snow, Night, et Sport) sont pris en charge par un appareil. Pour sélectionner ce mode, appelez SceneModeControl.SetValueAsync.

Mode Torche

Le mode Torche permet d’utiliser la LED torche d’un appareil. Vous configurez ce mode en utilisant la classe TorchControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Vous pouvez déterminer si un appareil prend en charge ce contrôle en vérifiant la propriété TorchControl.Supported. S’il est pris en charge, vous pouvez utiliser le mode Torche dans les applications de capture ou dans d’autres applications pour éclairer une pièce, par exemple.

Mode Flash

Le mode Flash permet d’utiliser le flash sur un appareil. Vous configurez ce mode en utilisant la classe FlashControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Vous pouvez déterminer si un appareil prend en charge ce contrôle en vérifiant la propriété FlashControl.Supported. S’il est pris en charge, vous pouvez utiliser le mode Flash dans une application photo pour gérer les conditions de faible éclairage ou pour la propriété RedEyeReduction.

Balance des blancs

La balance des blancs fournit à votre application un contrôle supplémentaire des paramètres de balance des blancs sur un appareil. Vous pouvez configurer ces niveaux en utilisant la classe WhiteBalanceControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Vous pouvez déterminer si un appareil prend en charge ce contrôle en vérifiant la propriété WhiteBalanceControl.Supported. S’il est pris en charge, vous pouvez utiliser l’une des valeurs ColorTemperaturePreset en appelant la méthode SetPresetAsync. Vous pouvez également appeler la méthode SetValueAsync pour définir une valeur Value spécifique entre les valeurs Min et Max.

Mode d’exposition

Le mode d’exposition fournit à votre application un contrôle supplémentaire des paramètres d’exposition sur un appareil. Vous configurez ce mode en utilisant la classe ExposureControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Vous pouvez déterminer si un appareil prend en charge ce contrôle en vérifiant la propriété ExposureControl.Supported. S’il est pris en charge, votre application peut définir des valeurs d’exposition en appelant la méthode SetValueAsync. Pour activer l’exposition automatique, appelez la méthode SetAutoAsync.

Mode de compensation de l’exposition

Le mode de compensation de l’exposition fournit à votre application un contrôle sur les niveaux d’exposition des photos capturées. Vous configurez ce mode en utilisant la classe ExposureCompensationControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Vous pouvez déterminer si un appareil prend en charge ce contrôle en vérifiant la propriété ExposureCompensationControl.Supported. Si tel est le cas, votre application peut définir des valeurs d’exposition en appelant la méthode SetValueAsync.

Mode de mise au point

Le mode de mise au point fournit à votre application un contrôle supplémentaire des paramètres de mise au point sur un appareil. Vous configurez ce mode en utilisant la classe FocusControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Vous pouvez déterminer si un appareil prend en charge ce contrôle en vérifiant la propriété FocusControl.Supported. Si tel est le cas, vous pouvez utiliser l’une des valeurs FocusPreset en appelant la méthode SetPresetAsync. Vous pouvez également appeler la méthode SetValueAsync pour définir une valeur Value spécifique entre les valeurs Min et Max.

Mode ISO

Le mode ISO permet à votre application de gérer les réglages de la sensibilité ISO sur un appareil. Dans des conditions de faible luminosité, vous pouvez privilégier une plus grande luminosité globale aux dépens d’un niveau de bruit plus élevé. Le contrôle de la sensibilité ISO permet à votre application de régler ce compromis. Vous configurez ce mode en utilisant la classe IsoSpeedControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Vous pouvez déterminer si un appareil prend en charge ce contrôle en vérifiant la propriété IsoSpeedControl.Supported. Si tel est le cas, utilisez la méthode SetPresetAsync pour définir le niveau ISO sur l’une des valeurs IsoSpeedPreset. SupportedPresets répertorie les valeurs prédéfinies prises en charge par l’appareil.

Région d’intérêt

La région d’intérêt permet à votre application de spécifier la classe RegionOfInterest dans un aperçu. Vous configurez ce paramètre en utilisant la classe RegionsOfInterestControl, à laquelle vous accédez via la propriété MediaCapture.VideoDeviceController.

Utilisez ce paramètre pour spécifier la zone de l’aperçu pour laquelle calculer des niveaux de mise au point et d’exposition, par exemple. La région d’intérêt permet d’utiliser des scénarios tels que : « Appuyez pour mettre au point ».

Champ de vision

Le champ de vision permet à votre application de traiter le champ de vision et l’angle de l’appareil avec les paramètres MediaCaptureSettings.PitchOffsetDegrees, MediaCaptureSettings.Horizontal35mmEquivalentFocalLength et MediaCaptureSettings.Vertical35mmEquivalentFocalLength.

Prendre une photo tout en enregistrant une vidéo

Votre application peut vérifier les paramètres MediaCaptureSettings.ConcurrentRecordAndPhotoSupported pour savoir si l’appareil autorise la prise de photo en mode enregistrement de vidéo.

Déterminer si l’appareil photo est tenu d’émettre des sons

Le paramètre MediaCaptureSettings.CameraSoundRequiredForRegion indique si le système d’exploitation est requis pour lire un son quand l’appareil photo prend une photo. Votre application peut utiliser ces informations pour décider qu’un son doit être émis.

Optimisation du périphérique de capture

La propriété VideoDeviceController.PrimaryUse indique si l’appareil de capture est utilisé principalement pour les photos ou pour les vidéos. Cela permet au système d’effectuer des optimisations pour améliorer les performances et la qualité.

Enregistrer au format AVI ou WAV non compressé

Votre application peut enregistrer le flux audio non compressé à partir du microphone en définissant MediaCaptureInitializationSettings.AudioProcessing à Raw.

Découverte des effets audio

Votre application peut découvrir la chaîne de traitement audio sur un point de terminaison. Vous pouvez utiliser ces informations pour configurer le traitement audio de votre application. L’espace de noms Windows.Media.Effects contient les classes AudioEffect, AudioCaptureEffectsManager, AudioEffectsManager et AudioRenderEffectsManager.

Pour créer un objet AudioCaptureEffectsManager, appelez AudioEffectsManager.CreateAudioCaptureEffectsManager. Pour créer un objet AudioRenderEffectsManager, appelez AudioEffectsManager.CreateAudioRenderEffectsManager.

Mises à jour du contrôle XAML MediaElement

[Obtenir l’exemple Lecture de contenu multimédia XAML maintenant.]

Le contrôle MediaElement a été étendu pour prendre en charge les contrôles de transport intégrés et l’affichage plein écran.

La propriété MediaElement.AreTransportControlsEnabled active ou désactive les contrôles de transport intégrés, vous n’avez plus à connecter vos boutons pour la lecture, l’arrêt, l’interruption ou le nettoyage. L’API fonctionne comme la propriété controls sur les éléments video et audio HTML5.

La propriété MediaElement.IsFullWindow active ou désactive l’affichage plein écran.

Le code ci-dessous montre comment activer les contrôles de transport intégrés.

<MediaElement Name="media" 
              Source="testVideo.mp4" 
              AreTransportControlsEnabled="True" />
MediaElement media = new MediaElement();
media.AreTransportControlsEnabled = true;

Le code ci-dessous montre comment activer l’affichage vidéo en plein écran.

<MediaElement Name="media"
              Source="testVideo.mp4" 
              IsFullWindow="True" />
MediaElement media = new MediaElement();
media.IsFullWindow = true;

Vidéo et audio HTML5

[Obtenir l’exemple Lecture de contenu multimédia HTML maintenant.]

Windows 8.1 introduit plusieurs mises à jour pour la lecture de contenu multimédia audio et vidéo, y compris la prise en charge de la spécification MSE (Media Source Extensions) HTML5 du W3C (World Wide Web Consortium), la prise en charge de la spécification EME (Encrypted Media Extensions) HTML5 du W3C et les mises à jour du contrôle MediaElement XAML.

Spécification MSE (Media Source Extensions) pour le contenu vidéo et audio HTML5.

La spécification MSE (Media Source Extensions) HTML5 est une norme W3C qui étend les éléments video et audio pour permettre la modification dynamique du flux de données multimédias sans utiliser de plug-ins. Elle permet d’appliquer des scénarios tels que la diffusion multimédia en continu adaptative, la diffusion en continu en direct, le collage de vidéos et l’édition de vidéos.

Des solutions de diffusion en continu adaptatives personnalisées peuvent être créées sur la base de MSE. Les solutions de diffusion en continu adaptatives modifient dynamiquement la vitesse de transmission du flux multimédia afin de fournir la meilleure qualité de diffusion en continu possible. Elles tentent de déterminer la vitesse de transmission optimale en fonction de contraintes telles que la bande passante réseau et l’utilisation de l’UC. Par exemple, si la bande passante réseau diminue, vous pouvez utiliser MSE pour faire basculer le flux vidéo sur une vitesse de transmission inférieure. Cela réduit la qualité de l’image, mais permet de poursuivre la lecture de la vidéo sans interruption.

L’insertion de publicités pendant la lecture du contenu multimédia est une application possible du collage dynamique de vidéos. Cela signifie que vous n’avez pas à insérer les clips dans les fichiers multimédias au préalable, mais que vous pouvez insérer un clip dans le flux multimédia pendant la lecture.

Voici quelques éléments importants de l’API MSE :

API Description
MediaSource Objet multimédia attaché à l’élément multimédia HTML. MediaSource contient les données multimédias spécifiées par un ou plusieurs objets SourceBuffer.
MediaSource.readyState Indique l’état actuel de MediaSource et s’il est attaché à un élément multimédia.
SourceBuffer Mémoire tampon utilisée pour contenir les données multimédias.
SourceBufferList Une collection d’objets SourceBuffer.
MediaSource.endOfStream Indique la cause de la fin du flux.
MediaSource.sourceBuffers Collection d’objets SourceBuffer qui contiennent les données multimédias pour MediaSource.
createObjectURL Crée une URL vers l’objet MediaSource. MediaSource peut être attaché à l’élément video ou audio en définissant la propriété src à cette URL.

 

Spécification EME (Encrypted Media Extensions) pour les éléments vidéo et audio HTML5

La spécification EME (Encrypted Media Extensions) HTML5 est une norme W3C qui étend les éléments video et audio pour activer le contenu protégé par la gestion des droits numériques (DRM) sans utiliser de plug-ins. Les extensions EME sont prises en charge dans Internet Explorer 11 et les applications du Windows Store en JavaScript dans Windows 8.1.

Voici quelques-unes des principales API utilisées avec EME :

API Description
MediaKeys Clés utilisées pour chiffrer et déchiffrer les données multimédias.
MediaKeySession Session de lecture avec laquelle les clés sont associées.
MediaKeys.createSession Crée l’objet MediaKeySession associé à l’objet MediaKeys.
keySystem Attribut de l’élément multimédia qui spécifie le système de clé. Le système de clé identifie soit le fournisseur de protection de contenu, soit le mécanisme de déchiffrement.
MediaKeyError Spécifie les types d’erreur associés à l’objet MediaKeys.
MediaKeyMessageEvent Spécifie les types d’événement associés MediaKeys.

 

Mises à jour de la fonctionnalité Lire sur

[Obtenir les exemples Lire sur et SystemMediaTransportControls maintenant.]

Windows 8.1 introduit plusieurs mises à jour pour améliorer la fonctionnalité Lire sur.

Lancer par programme l’interface utilisateur de la fonctionnalité Lire sur

Les nouvelles instructions d’interface utilisateur pour Windows 8.1 encouragent les développeurs d’applications à fournir un bouton dans l’application, en utilisant un glyphe standard Lire sur, pour lancer par programme le menu volant de l’interface utilisateur Lire sur, au lieu d’imposer à l’utilisateur d’afficher l’interface utilisateur en balayant l’icône Périphériques. Utilisez ShowPlayToUI pour afficher le menu volant.

Le code ci-dessous montre comment lancer l’interface utilisateur Lire sur.

private void showPlayTo() {
    Windows.Media.PlayTo.PlayToManager.ShowPlayToUI();
}
Private Sub showPlayTo()
    Windows.Media.PlayTo.PlayToManager.ShowPlayToUI()
End Sub
function showPlayTo() {
    Windows.Media.PlayTo.PlayToManager.showPlayToUI();
}

Lire sur par référence

La fonctionnalité Lire sur par référence permet aux pages Web et aux applications du Windows Store de lire du contenu protégé par la gestion des droits numériques (DRM). L’application spécifie un URI (Uniform Resource Identifier) par défaut qui sera envoyé au périphérique cible de la fonctionnalité Lire sur. Cet URI peut pointer sur un serveur multimédia sur le nuage. Si preferredSourceUri est présent, l’appareil cible Lire sur peut diffuser le contenu directement à partir du nuage et ce contenu peut être protégé par DRM. (L’alternative étant la diffusion de contenu à partir de l’ordinateur Windows 8.1 sur lequel le contenu ne doit pas être protégé.)

Le code ci-dessous montre comment configurer la fonctionnalité Lire sur par référence.

// video is a MediaElement defined in XAML.
using Windows.Foundation;

video.Source = new Uri("https://www.contoso.com/videos/video.mp4"); 
video.PlayToSource.PreferredSourceUri = 
   new Uri("https://www.contoso.com/catalogid=1234"); 
<video src="https://www.contoso.com/videos/video.mp4" 
   x-ms-playToPreferredSourceUri="https://www.contoso.com/catalogid=1234" /> 
var video = document.createElement('video'); 
document.body.appendChild(video); 

video.src = "https://www.contoso.com/videos/video.mp4"; 
video.msPlayToPreferredSourceUri = "https://www.contoso.com/catalogid=1234"; 
auto video = ref new Windows::UI::Xaml::Controls::MediaElement(); 

video->Source = 
   ref new Windows::Foundation::Uri("https://www.contoso.com/videos/video.mp4"); 

video->PlaytoSource->PreferredSourceUri = 
   ref new Windows::Foundation::Uri("https://www.contoso.com/catalogid=1234"); 

Prise en charge du contenu audio et vidéo Adobe Flash

La fonctionnalité Lire sur prend désormais en charge la lecture de contenu audio et vidéo Flash non protégé, à partir d’Internet Explorer dans la nouvelle interface utilisateur de Windows, sur un récepteur multimédia numérique.

Prise en charge de la spécification MSE (Media Source Extensions)

La spécification MSE (Media Source Extensions) est une nouvelle norme du W3C qui est au cœur de la fourniture de vidéos long métrage de haute qualité, de premier ordre et économique en termes d’énergie, à l’aide d’un simple navigateur Web. MSE ne requiert aucun plug-in. La fonctionnalité Lire sur prend maintenant en charge la lecture de contenu MSE non protégé à partir des applications du Windows Store en JavaScript et de sites Web, dans Internet Explorer, dans l’interface utilisateur de Windows.

Vidéo sur les périphériques uniquement audio

L’interface utilisateur de la fonctionnalité Lire sur prend maintenant en charge la sélection d’un récepteur uniquement audio en tant que point de terminaison distant pour du contenu vidéo. Le contenu vidéo est démixé et seul le composant audio est envoyé au périphérique.

Interface utilisateur des contrôles de transport multimédia

Dans Windows 8.1, vous pouvez utiliser la nouvelle classe SystemMediaTransportControls à la place de la classe MediaControl.

L’interface utilisateur des contrôles de transport multimédia, qui est lancée en appuyant sur monter ou descendre le volume, peut à présent être utilisée comme télécommande pour la lecture sur un périphérique Lire sur.

Les contrôles de transport peuvent être affichés et utilisés pour contrôler la lecture locale ou à distance, alors que l’application source se trouve en arrière-plan ou que l’écran du périphérique est verrouillé. Toutes les applications du Windows Store obtiennent une implémentation par défaut qui inclut :

  • le raccordement de contrôles de transport élémentaires, tels que les fonctions de lecture, de pause et de recherche ;

  • le nom de l’application à la place du titre de la chanson ;

  • l’icône de l’application à la place de la pochette de l’album.

Votre application peut améliorer l’implémentation par défaut en :

  • raccordant les contrôles de transport avancés, tels que les fonctions de piste suivante et de piste précédente ;

  • fournissant le titre de la chanson ;

  • fournissant la pochette de l’album ;

  • fournissant le titre de l’album.

Mises à jour de l’interface utilisateur de l’icône Périphériques

L’icône Périphériques est désormais organisée de façon hiérarchique et trie les appareils dans les catégories suivantes :

  • Lecture

  • Imprimer

  • Projection

  • Appuyer et envoyer (si cela est pris en charge par le matériel du périphérique)

Cela permet de clarifier les éléments que les utilisateurs peuvent trouver dans l’icône Périphériques. Même lorsqu’aucun périphérique n’est disponible, les sections restent visibles.

Persistance du récepteur multimédia numérique

Le récepteur multimédia numérique le plus récemment sélectionné, avec son état de connexion, apparaît en surbrillance dans l’icône Périphériques.

Améliorations du flux de connexion/déconnexion et de la signalisation des erreurs

L’interface utilisateur de la fonctionnalité Lire sur prend maintenant en charge un flux de connexion et de déconnexion amélioré.

Lors de l’établissement d’une connexion Lire sur avec un périphérique, une nouvelle interface utilisateur indique « Connexion en cours » et le menu volant Lire sur reste visible jusqu’à ce que la connexion soit établie. Si la connexion échoue, une erreur de connexion est signalée à l’application source.

Le bouton Déconnexion a été supprimé. À la place, pour terminer la lecture à distance et reprendre la lecture locale, les utilisateurs sélectionnent à présent Ce PC, qui est répertorié avec d’autres périphériques dans l’interface utilisateur de la fonctionnalité Lire sur.