UWP不支持的视频类型-要捕获哪个事件?

时间:2018-09-29 18:46:21

标签: c# uwp media-player

我正在编写一个具有视频播放器的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事件,并且似乎没有为该错误生成该事件。我不确定要看哪里。有什么想法吗?

2 个答案:

答案 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)