#c# #uwp #timed #mediaplayerelement
Вопрос:
Я работаю над настольным приложением UWP для воспроизведения видео. Мне нужно включить субтитры во время выполнения, и я пытаюсь использовать объект TimedMetadataTrack типа Subtitle. Хотя я включил несколько TimedTextCue в объект TimedMetadataTrack и добавил этот объект в коллекцию ExternalTimedMetadataTracks MediaSource, заголовок не отображается во время воспроизведения видео на элементе MediaPlayer. Чего не хватает? Любая помощь будет только приветствоваться. Спасибо.
XAML
<MediaPlayerElement x:Name="mediaPlayerElement"
AutoPlay="False"
Margin="5"
Width="640" Height="480"
HorizontalAlignment="Center"
AreTransportControlsEnabled="True" />
Код За
var source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/teste.mp4"));
TimedMetadataTrack metadataTrack = new TimedMetadataTrack("ID_0", "en-us", TimedMetadataKind.Subtitle);
for (int i = 0; i < 10; i )
{
TimedTextCue ttc = new TimedTextCue();
TimedTextLine ttl = new TimedTextLine();
ttl.Text = "This is subtitles line: " i.ToString() ".";
ttc.Id = "ID_" i;
ttc.Lines.Add(ttl);
ttc.StartTime = TimeSpan.FromSeconds((i * 10) 1);
ttc.Duration = TimeSpan.FromSeconds(10);
metadataTrack.AddCue(ttc);
}
source.ExternalTimedMetadataTracks.Add(metadataTrack);
this.mediaPlayerElement.Source = source;
Комментарии:
1. Вы проверили, включено ли отображение подписи? Вы можете найти кнопку в левом нижнем углу под названием » Показать меню закрытых подписей «. Нажмите кнопку и выберите пользовательский заголовок, который вы добавили, чтобы увидеть, будет ли отображаться заголовок.
2. @RoyLi-MSFT, есть ли способ выбрать подзаголовок с помощью программирования, чтобы пользователю не приходилось этого делать?
Ответ №1:
есть ли способ выбрать субтитры с помощью программирования, чтобы пользователю не приходилось этого делать?
Вы можете создать класс MediaPlaybackItem в качестве источника мультимедиа, затем вызвать метод SetPresentationMode объекта MediaPlaybackItem, передав индекс дорожки, которую вы хотите переключить, а затем указав значение из перечисления TimedMetadataTrackPresentationMode.
Подобный этому:
source.ExternalTimedMetadataTracks.Add(metadataTrack);
MediaPlaybackItem mediaPlaybackItem = new MediaPlaybackItem(source);
mediaPlayerElement.Source = mediaPlaybackItem;
mediaPlayerElement.AutoPlay = true;
mediaPlaybackItem.TimedMetadataTracks.SetPresentationMode(0, TimedMetadataTrackPresentationMode.PlatformPresented);
Вы можете обратиться к этой документации для получения дополнительной информации: элементы мультимедиа, списки воспроизведения и треки.