【问题标题】:WPF MediaElement stops playing if moved to other screen如果移动到其他屏幕,WPF MediaElement 将停止播放
【发布时间】:2012-05-18 04:03:27
【问题描述】:

我在使用 MediaElement 时遇到了一个非常奇怪的问题,似乎与多屏幕环境有关:偶尔(我无法每次都复制该问题)当我将它所在的窗口从一个屏幕拖到另一个屏幕时,MediaElement 停止播放. 这种奇怪的行为也发生在一个非常基本的代码中,例如:

public MainWindow()
{
    InitializeComponent();
}

protected override void OnSourceInitialized(EventArgs e)
{
    media.Play();
    base.OnSourceInitialized(e);
}

<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <MediaElement LoadedBehavior="Manual" 
                      Name="media" 
                      Source="C:\Users\Maurizio\Desktop\Pulp Fiction.avi"/>
    </Grid>
</Window>

有没有人遇到过(并最终解决了)任何类似的问题?

【问题讨论】:

    标签: c# wpf mediaelement multiscreen


    【解决方案1】:

    我找到了一种解决方法,在窗口渲染中禁用硬件加速似乎可以解决问题:

    using System.Windows.Interop;
    ...
    
        protected override void OnSourceInitialized(EventArgs e)
        {
            HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
            HwndTarget hwndTarget = hwndSource.CompositionTarget;
            hwndTarget.RenderMode = RenderMode.SoftwareOnly;
            media.Play();
            base.OnSourceInitialized(e);
        }
    

    我看不出性能上有什么区别,任何测试都没有出现问题...

    【讨论】:

    • 我知道这已经过时了,但只想提一下,如果您将视频放置在部分跨不同显示器的位置,则视频只会在一侧播放。不过,这是一个相当小的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多