如何在Windows 10 UWP应用程序中显示HLS流的嵌入式隐藏式字幕?

时间:2016-06-11 08:22:25

标签: uwp mediaelement hls closed-captions

我正在尝试在Windows 10 UWP应用中播放 HLS流。 This stream包含嵌入字幕,可以在直接播放HLS流时在VLC播放器或Edge浏览器中打开。

是否有办法在UWP MediaElement中显示这些嵌入式字幕

我尝试过使用这种方法,但在使用这些步骤时没有加载或显示textSource:

Uri source = new Uri("http://nasatv-lh.akamaihd.net/i/NASA_101@319270/master.m3u8");
AdaptiveMediaSourceCreationResult result = await AdaptiveMediaSource.CreateFromUriAsync(source);

if (result.Status == AdaptiveMediaSourceCreationStatus.Success)
{
    AdaptiveMediaSource astream = result.MediaSource;
    MediaSource mediaSource = MediaSource.CreateFromAdaptiveMediaSource(astream);
    var metadataTracks = mediaSource.ExternalTimedMetadataTracks.ToArray();
    var textSources = mediaSource.ExternalTimedTextSources.ToArray();
    // both arrays above are empty when loading the NASA TV stream

    MediaPlaybackItem mediaElement = new MediaPlaybackItem(mediaSource);
    Player.SetPlaybackSource(mediaElement);
}

注意我也试过使用Player Framework,但没有成功。

1 个答案:

答案 0 :(得分:1)

  

如何在UWP MediaElement中显示这些嵌入式字幕?

要在this stream中显示嵌入式字幕,您只需将URI设置为MediaElement' Source,然后将AreTransportControlsEnabled property更改为true启用标准传输控件。

<MediaElement x:Name="mediaElement"
              AreTransportControlsEnabled="True"
              Source="http://nasatv-lh.akamaihd.net/i/NASA_101@319270/master.m3u8" />

一旦有有效字幕,隐藏字幕菜单就会显示,我们可以用它来控制是否显示以下隐藏字幕:
enter image description here

MediaSource.ExternalTimedMetadataTracksMediaSource.ExternalTimedTextSources属性用于获取外部定时元数据轨道或与MediaSource关联的文本源。由于流中的字幕已嵌入,因此您未在ExternalTimedTextSources中添加TimedTextSource,因此没有textSources