WPF的MediaPlayer支持播放格式的有关问题
WPF的MediaPlayer支持播放格式的问题
Win7, WindowsMediaPlayer 12.
WPF下的MediaPlayer,都是说来自Windows安装的WindowsMediaPlayer程序。但是有很多WindowsMediaPlayer能播放的视频文件,在WPF下的MediaPlayer却不能播放。
WPF下的MediaPlayer和Windows安装的WindowsMediaPlayer程序到底是一种什么关系?是WPF MediaPlayer 调用WindowsMediaPlayer吗?为什么两者支持的文件格式会有不同?有没有办法使WPF的MediaPlayer能播放所有WindowsMediaPlayer能播放的文件?
------解决思路----------------------
WPF调用的到底是DirectShow还是MF到现在也没搞清,你大概需要去看官方给的源码才行,就因为这样,可能你的解码器插件并不是DShow的或者MF的(或者不同操作系统下是反的),就会出现找不到解码器的问题,或者解码器不对的问题。
------解决思路----------------------
他两个之间没有关系吧。
一个是类,不过要使用 VideoDrawing 创建播放实例,因为它不能直接作为UI控件之间在xaml页面上使用。参见:http://msdn.microsoft.com/zh-cn/library/aa969812(v=vs.110).aspx
另一个是直接使用的控件,参见:http://support.microsoft.com/kb/316992/zh-cn
------解决思路----------------------
MediaPlayer本质上和MediaElement都是同一个东西,调用了你系统的解码器,你弄个Win7Codecs之类的装上,一般就能播放大部分文件了,但是还是有部分文件播放不了,就是我刚才说的问题,可能解码器插件的范围不一样。
------解决思路----------------------
我可以负责任的说,WPF的MediaPlayer和MovieElement都是调用Windows Media Player内核,要支持更多的格式,根据我的经验, 《终极解码器》支持的格式最多。我也发现过有些视频WMP可以播,可WPF一播就导致崩溃,部分原因是视频的实际格式和扩展名不一致造成的。比如:实际格式是mov的,扩展名却被写成rmvb等,可能会导致播放崩溃。其实大多数的播放器会解析文件格式来播放,不会考虑扩展名,所以不会有问题。但有些视频即使格式和扩展名一致的情况下也会导致MovieElement崩溃,猜测这个跟解码器有一定的关系,但WMP却正常播放,这个问题可能只有微软才能解答。
------解决思路----------------------
以前遇到过,MP4文件播放,WMP返回的是YV12,MediaElement返回的是NV12,结果界面就花了,后来用了DirectShowLib,才解决了这个问题。
Win7, WindowsMediaPlayer 12.
WPF下的MediaPlayer,都是说来自Windows安装的WindowsMediaPlayer程序。但是有很多WindowsMediaPlayer能播放的视频文件,在WPF下的MediaPlayer却不能播放。
WPF下的MediaPlayer和Windows安装的WindowsMediaPlayer程序到底是一种什么关系?是WPF MediaPlayer 调用WindowsMediaPlayer吗?为什么两者支持的文件格式会有不同?有没有办法使WPF的MediaPlayer能播放所有WindowsMediaPlayer能播放的文件?
------解决思路----------------------
WPF调用的到底是DirectShow还是MF到现在也没搞清,你大概需要去看官方给的源码才行,就因为这样,可能你的解码器插件并不是DShow的或者MF的(或者不同操作系统下是反的),就会出现找不到解码器的问题,或者解码器不对的问题。
------解决思路----------------------
他两个之间没有关系吧。
一个是类,不过要使用 VideoDrawing 创建播放实例,因为它不能直接作为UI控件之间在xaml页面上使用。参见:http://msdn.microsoft.com/zh-cn/library/aa969812(v=vs.110).aspx
另一个是直接使用的控件,参见:http://support.microsoft.com/kb/316992/zh-cn
------解决思路----------------------
MediaPlayer本质上和MediaElement都是同一个东西,调用了你系统的解码器,你弄个Win7Codecs之类的装上,一般就能播放大部分文件了,但是还是有部分文件播放不了,就是我刚才说的问题,可能解码器插件的范围不一样。
------解决思路----------------------
我可以负责任的说,WPF的MediaPlayer和MovieElement都是调用Windows Media Player内核,要支持更多的格式,根据我的经验, 《终极解码器》支持的格式最多。我也发现过有些视频WMP可以播,可WPF一播就导致崩溃,部分原因是视频的实际格式和扩展名不一致造成的。比如:实际格式是mov的,扩展名却被写成rmvb等,可能会导致播放崩溃。其实大多数的播放器会解析文件格式来播放,不会考虑扩展名,所以不会有问题。但有些视频即使格式和扩展名一致的情况下也会导致MovieElement崩溃,猜测这个跟解码器有一定的关系,但WMP却正常播放,这个问题可能只有微软才能解答。
------解决思路----------------------
我可以负责任的说,WPF的MediaPlayer和MovieElement都是调用Windows Media Player内核,要支持更多的格式,根据我的经验, 《终极解码器》支持的格式最多。我也发现过有些视频WMP可以播,可WPF一播就导致崩溃,部分原因是视频的实际格式和扩展名不一致造成的。比如:实际格式是mov的,扩展名却被写成rmvb等,可能会导致播放崩溃。其实大多数的播放器会解析文件格式来播放,不会考虑扩展名,所以不会有问题。但有些视频即使格式和扩展名一致的情况下也会导致MovieElement崩溃,猜测这个跟解码器有一定的关系,但WMP却正常播放,这个问题可能只有微软才能解答。
以前遇到过,MP4文件播放,WMP返回的是YV12,MediaElement返回的是NV12,结果界面就花了,后来用了DirectShowLib,才解决了这个问题。