Я пишу приложение UWP, в котором есть видеопроигрыватель, и использую стандартный медиаплеер UWP (имя участника - это строка, полученная из диалогового окна ввода):
XAML:
<MediaPlayerElement x:Name="mediaPlayerElement"
Grid.ColumnSpan="3"
Grid.RowSpan="4"
AreTransportControlsEnabled="True"
RequestedTheme="Dark"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
<MediaPlayerElement.TransportControls >
<local:CustomMediaTransportControls IsCompact="False"
IsZoomButtonVisible="True"
IsZoomEnabled="True"
IsPlaybackRateButtonVisible="True"
IsPlaybackRateEnabled="True"
Opacity="0.5"
</local:CustomMediaTransportControls>
</MediaPlayerElement.TransportControls>
</MediaPlayerElement>
И код c # (membername - это строка, полученная из другого места в приложении, и это правильный путь, проверенный много раз. Он получается из средства выбора.):
StorageFile myvid = await StorageFile.GetFileFromPathAsync(membername)
mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(myvid);
mediaPlayerElement.MediaPlayer.Play();
Для некоторых файлов, таких как «.flv», на экране появляется ошибка: «Неподдерживаемый тип видео».Я пытаюсь поймать эту ошибку, чтобы использовать MPEG-декодер вместо стандартного.Я знаю, потому что я проверял это, что декодер MPEG будет делать эту работу.
Однако я не знаю, какое событие перехватить.Я возился с попыткой посмотреть на значение MediaPlaybackSession.MediaPLaybackState, и оно всегда равно 0 ..?!?Я также пытался перехватить событие MediaPlayer.MediaFailed, и, похоже, оно не генерируется для этой ошибки.Я не уверен, где искать.Есть идеи?