1

我正在尝试在 Windows 10 UWP app 中播放 HLS 流此流包含嵌入式字幕,当直接播放 HLS 流时,可以在 VLC 播放器或 Edge 浏览器中打开这些字幕。

有没有办法在 UWP MediaElement 中显示这些嵌入的字幕

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

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,但没有成功。

4

1 回答 1

1

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

要在此流中显示嵌入的字幕,您只需将 URI 设置为 MediaElement'sSource并将AreTransportControlsEnabled属性更改为true以启用标准传输控件。

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

一旦它有有效的字幕,隐藏字幕菜单将显示,我们可以使用它来控制是否显示隐藏字幕,如下所示:
在此处输入图像描述

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

于 2016-06-14T03:07:28.023 回答