C# WPF MediaElement 切换视频源后有几秒钟的黑屏
之前百度和bing搜索后 没有找到相关有用的资料,这个是微软的一个bug
经过网上的资料发现,有些是写两个MediaElement然后交替播放,有些是使用通过设置透明度来控制,但是感觉都不是太好,后来在堆栈溢出发现了一个问题回答后,有了一点启发
使用MidiaPlayer来实现,放弃使用MediaElement
CS文件中定义
private MediaPlayer player = new MediaPlayer();
player.Open(new Uri(“C:\\1.avi”));
VideoDrawing drawing = new VideoDrawing { Rect = new Rect(0, 0, 1920, 1080), Player = player };
player.Play();
DrawingBrush brush = new DrawingBrush(drawing);
player.MediaEnded += Player_MediaEnded; //End事件可以自己实现后 继续开始新的视频播放(可以实现循环播放或者单个播放)
_gridPlayer.Background = brush;
//停止 player.Stop()
//暂停 player.Pause();
xaml中定义
<Grid Width="1920" Height="1080" Margin="0,10,0,0" Name="_gridPlayer">
目前在 Player_MediaEnded事件后继续循环播放视频良好,也不会闪屏
备注:自己写测试程序的时候有时候播放到某一个视频的时候,程序闪退了,推测是解码器的问题
目前遗留的问题:如果是图片和视频循环播放,播放到图片的时候,把path重新设置为当前图片的path后 不会执行 Player_MediaEnded事件,视频没有这个问题
等后面找到合适的方案后再补充此遗留问题