我正在编写一个具有视频播放器的UWP应用程序,并且正在使用标准的UWP Media Player(成员名称是从输入对话框获取的字符串):
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#代码(成员名是从应用程序其他位置获取的字符串,并且是有效路径,已多次检查。它是从选择器中获取的。):
StorageFile myvid = await StorageFile.GetFileFromPathAsync(membername)
mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(myvid);
mediaPlayerElement.MediaPlayer.Play();
对于某些文件,例如“ .flv”,我在屏幕上看到错误:“不支持的视频类型”。我试图捕获此错误,以便使用MPEG解码器而不是标准解码器。我知道,因为我进行了测试,所以MPEG解码器可以完成这项工作。
但是,我不知道该抓哪个事件。我一直在尝试查看MediaPlaybackSession.MediaPLaybackState的值,该值始终等于0 ..?!?我也一直在尝试捕获MediaPlayer.MediaFailed事件,并且似乎没有为该错误生成该事件。我不确定要看哪里。有什么想法吗?
答案 0 :(得分:1)
您可以像下面这样直接处理MediaPlayer.MediaFailed Event:
StorageFile myvid = await StorageFile.GetFileFromPathAsync(membername);
mediaPlayerElement.MediaPlayer.Source = MediaSource.CreateFromStorageFile(myvid);
mediaPlayerElement.MediaPlayer.MediaFailed += MediaPlayer_MediaFailed;
mediaPlayerElement.MediaPlayer.Play();
private void MediaPlayer_MediaFailed(Windows.Media.Playback.MediaPlayer sender, Windows.Media.Playback.MediaPlayerFailedEventArgs args)
{
Debug.WriteLine(args.Error);
}
答案 1 :(得分:0)