使媒体内容成为辅助内容 (XAML)

要查找本主题的 HTML/JavaScript 版本吗?请参阅使媒体内容成为辅助内容 (HTML)

如果你的应用中包括媒体内容,请确保你为媒体内容提供描述,或者提供备用音频曲目来描述在音频部分中正在发生的关键可见元素,或者两者均提供。 描述为媒体演示文稿的语音和必不可少的非语音音频部分的可见对等文本。这些描述包括所有口头材料,以及了解媒体所需的所有音频效果。请注意,描述不仅仅用于基于传统视频的材料,仅有音频的媒体也需要描述,例如播客、动画(包括游戏)中的画外音以及演示文稿(包括屏幕捕获)和其他类似的内容。

为媒体提供辅助传输控件

许多辅助功能标准或建议都声明用户应当对作为应用行为一部分的任何媒体播放进行控制。这种控制应当快速而且易于作为 UI 的一部分发现。这样做的实际理由是许多需要辅助功能的用户都在使用屏幕阅读器。如果媒体开始播放音频曲目,而且用户无法快速发现如何停止媒体,则用户将不可能听到屏幕阅读器的、可帮助其找到必要控件的描述。实际上,在媒体播放结束之前,用户无法通过屏幕阅读器对你的应用执行任何其他有用的操作。

一些辅助功能建议声明在应用首次启动时媒体从未自动播放过。请改为向用户提供通过各种技术(如遍历 Tab 键顺序或依赖其他辅助技术)检查整个应用结构的机会。之后,用户会在充分了解了如何与你的应用进行交互时,发现如何亲自播放媒体。

在使用 C++、C# 或 Visual Basic 的 Windows 运行时应用中播放视频内容的主要元素是 MediaElement 对象。MediaElement 可以使用一组默认传输控件,也可以使用自定义传输控件,这些控件通过在关联的 MediaElement 实例上调用 MediaElement 方法来控制媒体播放。使用默认传输控件的情况可能更为常见;将 AreTransportControlsEnabled 属性设置为 true 即可启用此方式。

默认传输控件内置辅助功能支持,该支持是系统为默认传输控件提供的模板的组成部分。例如,“播放/暂停”按钮包含 Name 和用以描述当前操作的工具提示,该按钮可聚焦,也可调用;“寻道”滑块支持使用箭头键进行导航,通过 RangeValue 模式报告其值,等等。但是,如果你不使用这些默认控件,请确保你的传输控件提供基本辅助功能信息和支持。建议你检查默认传输控件中的现有辅助功能支持,然后确保你的传输控件的辅助功能至少达到默认传输控件的水平。

对于传输控件来说,一个常见的设计方法就是仅使用图标。这通常是通过使用具有 Image 内容或者(可能)复合图形(如 Path 定义的形状)的 Button 来完成的。在执行此操作时,请务必确保 Button 还具有用于描述此操作的 AutomationProperties.Name 值,以及/或包含该描述的工具提示,以便屏幕阅读器为用户读取此信息。同时,确保所有传输控件(包括按钮)按照有用的 Tab 键顺序排列,以保证只使用键盘即可聚焦,并且聚焦后可以使用空格键或 Enter 键来调用激活。

说明

描述可以处于关闭状态(用户可以打开和关闭描述显示),也可以处于打开状态(所有用户始终可以看到描述—尤其是刻录在视频中的描述)。 除了访问正确的媒体外,打开的描述不需要应用执行任何其他工作。但是,关闭的描述依赖在边带文本文件或格式中查找文本信息,然后将这些描述显示在 UI 的突出部分。

如果应用中包括音频或视听媒体,请为听力受损的用户提供文本替换内容或描述。通常使用媒体生产工具向媒体文件直接添加描述。

如上所述,MediaElement 类没有默认 UI,因此它也没有用来显示关闭描述中文本的默认 UI 区域。你应负责为该区域指定控件并实现可在与媒体进行适当的同步时显示描述文本的行为。同步是通过处理 MarkerReached 事件实现的。每当 MarkerReached 事件引发时,就意味着关闭描述中有更多的文本可显示。然后,你可以从事件数据获取文本并将该文本呈现到文本区域或控件中。你负责仅显示最新的描述文本,而不是维护自动滚动区域(在该区域中,后续描述会替换前面的描述)。

你可以使用如下代码在应用中显示描述:


<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

替换音频流

在应用中播放的媒体的原始制作人可以使用媒体生成工具向媒体文件添加替换音频流。启用流的格式在定义将使用的视频格式(WMV 等)时定义。这些流对提供口语解说词很有用,包括供视觉受损的用户使用的视频流说明。

若要从你的应用代码中访问这些替换流,请使用 AudioStreamCountAudioStreamIndex 属性。在下面的示例中,mediaMediaElement 类的命名实例,它已经加载了一个应当包含多个音频流的源媒体文件。此代码是用户控件的处理程序,该控件允许用户在媒体加载之后在音频流之间进行切换。


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


有关备用音频流的详细信息,请参阅如何选择不同语言的音轨。该主题的编写角度是为不同的语言提供音频流,而不是提供包含音频说明的音频流,但技术概念是相同的。

相关主题

XAML 辅助功能示例
XAML 媒体播放示例
MediaElement
播放和预览音频和视频

 

 

显示:
© 2015 Microsoft