Как отобразить встроенные скрытые субтитры для потока HLS в приложении Windows 10 UWP?

Я пытаюсь воспроизвести поток HLS в приложении Windows 10 UWP. Этот поток содержит встроенные субтитры, которые можно включить в проигрывателе VLC или в браузере Edge при непосредственном воспроизведении потока HLS.

Есть ли способ показать эти встроенные подписи в UWP MediaElement?

Я пытался использовать этот подход, но текстовые источники не загружаются и не отображаются при использовании этих шагов:

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, но безуспешно.


person Martin Suchan    schedule 11.06.2016    source источник


Ответы (1)


Как показать эти встроенные подписи в UWP MediaElement?

Чтобы отобразить встроенные субтитры в этом потоке, вы можете просто установите URI как MediaElement noreferrer">Source и измените AreTransportControlsEnabled свойство на true, чтобы включить стандартные элементы управления транспортом.

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

После того, как у него будут действительные субтитры, отобразится меню скрытых субтитров, и мы можем использовать его, чтобы контролировать, отображать ли субтитры, как показано ниже:
введите здесь описание изображения

MediaSource.ExternalTimedMetadataTracks и MediaSource.ExternalTimedTextSources используются для получения внешних треков синхронизированных метаданных или источников текста, связанных с MediaSource. Поскольку субтитры в потоке встроены, а вы не добавили TimedTextSource в ExternalTimedTextSources, поэтому textSources нет.

person Jay Zuo    schedule 14.06.2016
comment
Спасибо, я никогда не находил информацию об этом переключателе, включая тот факт, что он также автоматически обрабатывает субтитры! - person Martin Suchan; 21.06.2016