我正在尝试在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,但没有成功。
答案 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" />
一旦有有效字幕,隐藏字幕菜单就会显示,我们可以用它来控制是否显示以下隐藏字幕:
MediaSource.ExternalTimedMetadataTracks和MediaSource.ExternalTimedTextSources属性用于获取外部定时元数据轨道或与MediaSource关联的文本源。由于流中的字幕已嵌入,因此您未在ExternalTimedTextSources
中添加TimedTextSource,因此没有textSources
。