none
老题重谈,WPF视频播放问题【Bob Bao,还在吗?】 RRS feed

  • 问题

  • 【Windows XP平台】WPF里,MediaElment控件使用方便,但播放高清晰的视频时,便会不流畅,从而导致声音与画面不同步。

    若放弃MediaElment,直接使用嵌入WindowsMediaPlayer,播放视频是没得话说,但使用WindowsFormsHost后,WPF里的控件没得办法浮在上面,windowsMediaPlayer它在最顶层。

    直接用DirectShow做,播放啥视频都OK,并且也非常好控制,但就是找不到将视频呈现(Render)到WPF控件里的方式。 

    真的很纠结,在WPF里找不到DirectShow好的呈现方式,如果使用DirectX  D3DImage去呈现,会产生AirSpace问题,这与同嵌入HwndHost一样。关键问题是,我要在播放视频的时候,可能会使用一个WPF里Border控件浮在上面,如果嵌入HwndHost的话,那么这个控件是浮不上去的。

    为什么MediaElement性能如此之差劲呀?还用什么方去能在WPF里播放清晰度高点的视频啊。

    期待大牛们能给点好的建议!!!

    2011年11月25日 3:36

答案

全部回复

  • 在, XP下面不行是因为Windows Media Player版本老,还有你没有安装相应的高清视频解码造成。MediaElement 本身还是使用了 WMP的内核组件。 只要你用WindowsMediaPlayer在装好视频解码后能播放流畅,那么MediaElement也可以播放流畅了。
    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    2011年11月25日 5:53
    版主
  • 安装了解码器,也升级了Windows Media Player,而且直接用Windows Media Player可以播放高清的,只是用MediaElement播放不流畅!在WPF里用Media+DrawingBrush播放视频也一样,比较卡。

    MediaElement 不知道还有没有优化的空间呢!

    2011年11月25日 6:22
  • ???
    2011年11月25日 7:59
  • 是的,MediaElement和系统本身,硬件都有很多关系。但是在Windows7上表现确实不错。 建议看看DX,硬件驱动是否都已升级。还有可以试试看Win7, XP都十几年了,是该退出舞台了。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    2011年11月28日 2:08
    版主
  • 跟进:

    看似是由于你的Atom CPU的关系。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    2011年12月6日 2:34
    版主
  • 嗯,谢谢Bob Bao。

    真的很纠结的,设备是Atom(1.8G)+GMA3150,无硬解。WindowsMediaPlayer勉强跑跑720p左右高清,嵌入到WPF里,就不太稳定,偶儿会挂掉。

    很无奈,硬件貌似就这样,升不了了。但要求“高清+稳定”。

    现在考虑,换换其它播放控件试试,不知是否有好的ActiveX播放控件推荐?Bob Bao ):

    2011年12月8日 6:23
  • 嗯,我也试过了。win7里的MediaElment性能确实不错,比Xp强多了。

    但win7成本高啊,硬件要求也比xp高啊。没有办法,只能继续留在xp平台上苦奔

    2011年12月8日 6:26
  • 如果说是硬件限制了高清的性能,那么即使换个软件,也就是说换个控件也很难达到好的效果.不过换个角度思考, 你既然是Atom CPU ,小型本,屏幕也不会很大,在DPI 96的情况,720p 1080p 实在无法发挥高清的优势,480p 已经很清晰了,所以你是否可以考虑降低视频原有清晰度,毕竟在小屏幕上 480p已经很清晰了。
    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    2011年12月8日 7:53
    版主
  • 和楼主遇到的情况差不多,我的硬件也是ATOM

    用MediaELement 频繁播放大型WMV时。经常出现播放卡。甚至播放无效果的情况

    困扰了很久。都得不到解决,主要是不知道原因出在哪。

    暂时的解决办法是:mediaplay.source = uri后演示一段时间 再play,暂时测试没有出现上述的情况

    你说的directshow,真的很好吗?我没有试过。记得WPFMediaKit.dll 好象是directshow显现的

    至于WindowMediaPlayer是不是和MediaPlayer一样呢。如果前都可以。是不是用后者也可以,调用的都是《MediaPlayer 11软件》?

    2012年3月30日 3:42
  • 你是什么系统,xp还是win7?

    在XP里,我感觉用mediaplay与mediaElement性能差不了多少,720P都会卡的。

    我现在用的是DirectShow,只要直接用WindowsMediaPlayer播放不卡的视频,都没有问题的。但有一个问题的是,高清的视频时常常会出现像马赛克一样的闪。把格式转换成f4v后要好一些。

    调用WindowsMediaPlayer我也试过,可是可以,但不太稳定。WPFMediaKit也不啥的,当然在win7下是很好的。

    现在给我的感觉是,WPF在多媒体这一块,真的不太适合在XP下玩

    2012年3月31日 2:33