Hacer que el contenido multimedia sea accesible (XAML)

Applies to Windows and Windows Phone

¿Buscas la versión para HTML/JavaScript de este tema? Consulta Hacer que el contenido multimedia sea accesible (HTML).

Si la aplicación incluye contenido multimedia, asegúrate de proporcionar subtítulos para el contenido o una pista de audio alternativa en la que se describan los elementos visuales clave que ocurran en el vídeo, o ambas cosas. Los subtítulos son equivalentes en texto visible de los fragmentos hablados y porciones del audio no hablado esenciales de una presentación multimedia. Incluyen todo el material hablado y cualquier efecto de audio que sea necesario para entender los medios. Ten en cuenta que los subtítulos no se deben proporcionar solamente para material basado en vídeo tradicional: también son necesarios para medios constituidos por audio solamente, como podcasts, narradores en animaciones (incluidos los juegos) y presentaciones (incluidas las capturas de pantalla) y otro contenido similar.

Proporcionar controles de transporte accesibles para medios

Muchas normas o recomendaciones de accesibilidad afirman que los usuarios deben tener control sobre cualquier reproducción multimedia que forme parte del comportamiento de una aplicación. El usuario debería poder descubrir este control rápida y fácilmente como parte de la interfaz del usuario. Esto se debe a que muchos usuarios con necesidades de accesibilidad utilizan lectores de pantalla. Si los medios comienzan a reproducir una pista de audio y el usuario no puede descubrir rápidamente cómo detenerlos, el usuario no podrá oír las descripciones del lector de pantalla que lo ayudarían a encontrar el control necesario. De hecho, el usuario no podrá hacer nada útil con la aplicación mediante el lector de pantalla hasta que termine la reproducción multimedia.

Algunas recomendaciones de accesibilidad estipulan que nunca debes reproducir medios de forma automática cuando se inicia la aplicación por primera vez. En cambio, debes dar a los usuarios la posibilidad de revisar la estructura general de la aplicación mediante técnicas como recorrer el orden de tabulación o usar otras tecnologías de asistencia. De esta forma, los usuarios podrán descubrir cómo reproducir los medios ellos mismos, en un momento en el que ya tendrán suficiente información sobre cómo interactuar con la aplicación.

El principal elemento que muestra contenido de vídeo en una aplicación de Windows en tiempo de ejecución con C++, C# o Visual Basic es un objeto MediaElement. Un MediaElement puede usar un conjunto predeterminado de controles de transporte o controles de transporte personalizados que controlan la reproducción de medios llamando a los métodos de MediaElement en la instancia de MediaElement asociada. Probablemente, usar los controles de transporte predeterminados es más habitual; para ello, se establece la propiedad AreTransportControlsEnabled en true.

Los controles de transporte predeterminados tienen compatibilidad para accesibilidad integrada como parte de su plantilla proporcionada por el sistema. Por ejemplo, el botón Reproducir/Pausa tiene un Name y una información sobre herramientas que describe la acción actual, puede tener el foco y ser invocado, el control deslizante para Buscar admite las teclas de dirección para la navegación y notifica su valor mediante el patrón RangeValue, entre otras cosas. Pero si no estás usando estos controles, asegúrate de que tus controles de transporte proporcionan compatibilidad e información sobre accesibilidad básica. Quizás quieras examinar la compatibilidad para accesibilidad existente en los controles de transporte predeterminados para asegurarte de que la accesibilidad de tus controles de transporte es al menos tan buena como esa.

Una metáfora de diseño habitual para los controles de transporte es usar solo iconos. Por lo general, esto se hace con un Button que tenga contenido de Image o posiblemente una composición de gráficos como una forma definida por Path. Siempre que lo hagas, asegúrate de que Button también tiene un valor de AutomationProperties.Name que describa la acción, e información sobre herramientas con esa misma descripción para que los lectores de pantalla puedan leer esta información a los usuarios. Asegúrate también de que todos tus controles de transporte, incluidos los botones, están en un orden de tabulación útil para lograr el foco solo con el teclado, y que los botones se puedan invocar con la barra espaciadora o la tecla Entrar para activarlos cuando tienen el foco.

Subtítulos

Los subtítulos pueden ser "ocultos" (el usuario puede activar o desactivar la visualización de los subtítulos) o "abiertos" (los subtítulos están visibles siempre para todos los usuarios, por lo general programados dentro del vídeo). Los subtítulos abiertos no requieren ninguna acción adicional de la aplicación que no sea la de acceder a los medios correctos. Pero los subtítulos ocultos necesitan encontrar la información de texto en un formato o archivo de texto de banda lateral y después que esos subtítulos se muestren en una parte destacada de la interfaz de usuario.

Si tu aplicación incluye medios audiovisuales o de audio, debes proporcionar subtítulos y alternativas de texto para aquellas personas con discapacidades auditivas. Generalmente, los subtítulos se agregan directamente a los archivos multimedia usando herramientas de producción multimedia.

Como se mencionó anteriormente, la clase MediaElement no tiene una interfaz de usuario predeterminada y, por consiguiente, no tiene una área de la interfaz de usuario predeterminada para mostrar el texto de los subtítulos ocultos. Eres tú quien debe especificar un control para esa área e implementar el comportamiento que muestra el texto de los subtítulos correctamente sincronizados con los medios. Para lograr la sincronización, debes controlar el evento MarkerReached. Cada vez que se activa un evento MarkerReached, significa que hay más texto para mostrar de un subtítulo oculto. Entonces podrás obtener el texto de los datos del evento y representar el texto en un control o área de texto. Tú decides si quieres mostrar solo el texto del subtítulo más reciente o mantener un área de desplazamiento automática donde los subtítulos consecutivos se vayan remplazando.

Para mostrar los subtítulos en la aplicación, puedes usar código como sigue:


<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

Flujos de audio alternativos

Los productores originales de los medios que reproduces en una aplicación pueden agregar secuencias de audio alternativas a los archivos multimedia mediante herramientas de producción multimedia. El formato que habilita las secuencias forma parte de la definición del formato de vídeo que se va a usar (WMV u otros). Estas secuencias son útiles para proporcionar comentarios hablados, incluidas descripciones de la secuencia de vídeo para su uso por parte de personas con discapacidades visuales.

Para acceder a estos flujos alternativos desde el código de la aplicaciones, usa las propiedades AudioStreamCount y AudioStreamIndex. En el siguiente ejemplo, media es una instancia con nombre de la clase MediaElement y ha cargado un archivo multimedia de origen que espera que contenga varios flujos de audio. Este código es un controlador para un control de usuario que permite a los usuarios alternar entre flujos de audio una vez que los medios se hayan cargado.


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;
     }
}


Para más información acerca de las secuencias de audio, consulta el tema sobre cómo seleccionar pistas de audio en diferentes idiomas. Ese tema está escrito desde la perspectiva de proporcionar secuencias para diferentes idiomas en lugar de una secuencia que incluya descripciones de audio, pero los conceptos técnicos son los mismos.

Temas relacionados

Muestra de accesibilidad XAML
Muestra de reproducción de multimedia XAML
MediaElement
Reproducción y vista previa de audio y vídeo

 

 

Mostrar:
© 2014 Microsoft