Windows Dev Center

Rendre le contenu multimédia accessible (XAML)

Vous cherchez la version HTML/JavaScript de cette rubrique ? Voir Rendre le contenu multimédia accessible (HTML).

Si votre application comprend du contenu multimédia, assurez-vous de fournir des sous-titres pour le contenu ou une autre piste audio qui décrit les principaux éléments visuels qui se produisent dans la partie vidéo, ou les deux. Les sous-titres sont des équivalents texte visibles de la parole et des parties audio non parlées essentielles d’une présentation multimédia. Ils incluent à la fois tout le contenu parlé et tout effet audio requis pour la compréhension du contenu multimédia. Notez que les sous-titres ne sont pas uniquement du contenu traditionnel basé sur la vidéo ; ils sont également requis pour les médias exclusivement audio, tels que les podcasts, les commentaires sonores dans les animations (notamment les jeux) et les présentations (notamment les captures d’écran), et autre contenu similaire.

Mise à disposition de contrôles de transport accessibles pour le contenu multimédia

De nombreuses recommandations ou normes d’accessibilité stipulent que les utilisateurs doivent pouvoir contrôler toute lecture multimédia qui fait partie du comportement d’une application. Ce contrôle doit être rapide et facile à découvrir dans le cadre de l’interface utilisateur. La motivation pratique est le fait que de nombreux utilisateurs ayant des besoins d’accessibilité utilisent des lecteurs d’écran. Si une présentation multimédia commence à lire une piste audio et que l’utilisateur ne peut pas rapidement découvrir comment arrêter la présentation, il lui devient impossible d’entendre les descriptions du lecteur d’écran qui l’aideraient à trouver le contrôle nécessaire. En fait, l’utilisateur ne pourra rien faire d’utile avec votre application par le biais du lecteur d’écran tant que la lecture multimédia n’aura pas été arrêtée.

Certaines recommandations en matière d’accessibilité stipulent que l’on ne doit jamais lire du contenu multimédia automatiquement lors du premier démarrage de l’application. Au lieu de cela, vous devez donner aux utilisateurs l’opportunité d’examiner la structure globale de l’application par le biais de techniques telles que la traversée de l’ordre de tabulation ou le recours à d’autres technologies d’assistance. Ils peuvent alors découvrir comment lire le contenu multimédia eux-mêmes, au moment où ils disposeront d’informations suffisantes sur la façon d’interagir avec votre application.

Le principal élément qui affiche du contenu vidéo dans une application Windows Runtime utilisant C++, C# ou Visual Basic est un objet MediaElement. Un élément MediaElement peut utiliser soit un ensemble par défaut de contrôles de transport, soit des contrôles de transport personnalisés, qui contrôlent la lecture du contenu multimédia en appelant des méthodes MediaElement sur l’instance MediaElement associée. L’utilisation de contrôles de transport par défaut est probablement plus courante ; pour activer cette fonctionnalité, affectez à la propriété AreTransportControlsEnabled la valeur true.

Les contrôles de transport par défaut ont une prise en charge de l’accessibilité intégrée dans le cadre de leur modèle fourni par le système. Par exemple, le bouton Lecture/Pause a un nom (Name) et une info-bulle pour décrire l’action en cours, il peut être actif et appelé, le curseur de l’objet Seek prend en charge les touches de direction pour la navigation et indique sa valeur via le modèle RangeValue, etc. Mais si vous n’utilisez pas ces contrôles par défaut, assurez-vous que vos contrôles de transport fournissent la prise en charge et les informations d’accessibilité de base. Vous pouvez souhaiter examiner la prise en charge de l’accessibilité existante dans les contrôles de transport par défaut, et vous assurer que l’accessibilité de vos contrôles de transport est au moins aussi bonne.

Une métaphore de conception courante pour les contrôles de transport multimédia consiste à utiliser uniquement des icônes. On utilise généralement pour cela un objet Button avec du contenu Image ou éventuellement un composite graphique tel qu’une forme définie par Path. Dans ce cas, vous devez vous assurer que l’objet Button possède également une valeur AutomationProperties.Name qui décrit l’action, et/ou des info-bulles ayant la même description, afin que les lecteurs d’écran puissent lire ces informations aux utilisateurs. De plus, assurez-vous que vos contrôles de transport incluant les boutons sont dans un ordre de tabulation utile pour placer le focus uniquement avec le clavier, et que les boutons peuvent être invoqués avec les touches Espace ou Entrée pour l’activation quand ils ont le focus.

Sous-titres

Les sous-titres peuvent être fermés (l’affichage des sous-titres peut être activé et désactivé par l’utilisateur) ou ouverts (les sous-titres sont toujours visibles de tous les utilisateurs —, car ils font généralement partie de la vidéo). Les sous-titres ouverts ne nécessitent de la part de l’application aucun travail supplémentaire autre que l’accès au média correct. Les sous-titres fermés, quant à eux, nécessitent de rechercher les informations textuelles dans un fichier texte associé, puis d’afficher ces sous-titres dans une partie bien visible de l’interface utilisateur.

Si votre application comprend du contenu audio ou audiovisuel, vous devez fournir des alternatives sous forme de texte ou des sous-titres pour les malentendants. Vous ajoutez généralement des sous-titres directement dans vos fichiers multimédias à l’aide d’outils de production de média.

Comme mentionné plus haut, la classe MediaElement n’a aucune interface utilisateur par défaut et par conséquent aucune surface d’interface utilisateur par défaut pour l’affichage du texte des sous-titres fermés. C’est à vous de spécifier un contrôle pour cette surface et de mettre en œuvre le comportement qui affiche le texte des sous-titres de manière synchronisée. La synchronisation s’obtient en effectuant la gestion de l’événement MarkerReached. Chaque fois qu’un événement MarkerReached est déclenché, cela signifie qu’il y a un autre texte de sous-titres fermés à afficher. Vous pouvez alors obtenir le texte à partir des données d’événement et l’afficher dans un contrôle ou une zone de texte. C’est vous qui décidez s’il faut afficher uniquement le texte de sous-titres le plus récent ou plutôt conserver une zone de défilement automatique dans laquelle les sous-titres se succèdent.

Vous pouvez afficher des sous-titres dans votre application à l’aide d’un code tel que celui-ci :


<MediaElement x:Name="media" Width="300" Height="200"
  MarkerReached="OnMarkerReached" Source="media.wmv"/>
...
<TextBlock x:Name="CaptionTextBlock" />


Public Sub OnMarkerReached(ByVal sender As Object,
    ByVal e As TimelineMarkerRoutedEventArgs)

    CaptionTextBlock.Text = e.Marker.Text

End Sub

Flux audio de substitution

Les producteurs d’origine du contenu multimédia que vous diffusez dans une application peuvent ajouter des flux audio de substitution aux fichiers multimédias à l’aide d’outils de production de média. Le format qui active les flux fait partie de la définition du format vidéo en cours d’utilisation (WMV, etc.). Ces flux sont utiles pour fournir des commentaires parlés, notamment des descriptions du flux vidéo destinées à être utilisées par les malvoyants.

Pour accéder à ces flux de substitution à partir du code de votre application, utilisez les propriétés AudioStreamCount et AudioStreamIndex. Dans l’exemple suivant, media est une instance nommée de la classe MediaElement qui a chargé un fichier multimédia source qui contient normalement plusieurs flux multimédias. Ce code est un gestionnaire pour un contrôle utilisateur qui permet à l’utilisateur de basculer entre des flux audio une fois le média chargé.


private void AltAudioBtn_Click(object sender, RoutedEventArgs e)
{
    if (media.AudioStreamCount > 1)
    {
         if (media.AudioStreamIndex == 1)
         {
            media.AudioStreamIndex = 0;
            (sender as Button).Content = "Play full-description audio";
         } else {
            media.AudioStreamIndex = 1;
            (sender as Button).Content = "Play default audio";
         }
     } else
     {
         (sender as Control).IsEnabled = false;
     }
}


Pour plus d’informations sur les flux audio de substitution, voir Comment sélectionner des pistes audio de langues différentes. Cette rubrique est écrite du point de vue de la mise en œuvre de flux pour différentes langues (par opposition à un flux comprenant des descriptions audio). Toutefois, les concepts techniques sont les mêmes.

Rubriques associées

Exemple d’accessibilité XAML
Exemple de lecture de contenu multimédia XAML
MediaElement
Lecture et prévisualisation de données audio et vidéo

 

 

Afficher:
© 2015 Microsoft