UWP 不支持的视频类型 - 要捕获哪个事件?
UWP Unsupported Video Type - which event to catch?
我正在编写一个具有视频播放器的 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”,我在屏幕上收到一条错误消息:"Unsupported Video Type"。我试图捕获此错误以便使用 MPEG 解码器而不是标准解码器。我知道,因为我测试过它,MPEG 解码器可以完成这项工作。
但是,我不知道要捕捉哪个事件。我一直在尝试查看 MediaPlaybackSession.MediaPLaybackState 的值,但它始终等于 0..?!?我也一直在尝试捕获 MediaPlayer.MediaFailed 事件,但似乎并没有为此错误生成。我不确定在哪里看。有什么想法吗?
尝试处理 VideoTrack.OpenFailed 事件。
参见Handle unsupported codecs and unknown errors when opening media items。
您可以像下面这样直接处理 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);
}
我正在编写一个具有视频播放器的 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”,我在屏幕上收到一条错误消息:"Unsupported Video Type"。我试图捕获此错误以便使用 MPEG 解码器而不是标准解码器。我知道,因为我测试过它,MPEG 解码器可以完成这项工作。
但是,我不知道要捕捉哪个事件。我一直在尝试查看 MediaPlaybackSession.MediaPLaybackState 的值,但它始终等于 0..?!?我也一直在尝试捕获 MediaPlayer.MediaFailed 事件,但似乎并没有为此错误生成。我不确定在哪里看。有什么想法吗?
尝试处理 VideoTrack.OpenFailed 事件。
参见Handle unsupported codecs and unknown errors when opening media items。
您可以像下面这样直接处理 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);
}