使用WPF播放和停止多个MediaElement

3
我有一个关于WPF中多个MediaElement的问题。我想在同一时间只播放一个MediaElement,直到音频索引改变。声源只是一个短语,所以我会重复/循环它。但问题是,它会在一段时间后停止播放。有谁能帮帮我吗?
以下是一些代码:
*.xaml
<MediaElement x:Name="mediaElementStrawberries" LoadedBehavior="Manual" UnloadedBehavior="Manual" MediaEnded="mediaElementStrawberriesEnded" Source="Media\Strawberries.mp3"/>
<MediaElement x:Name="mediaElementBlackberries" LoadedBehavior="Manual" UnloadedBehavior="Manual" MediaEnded="mediaElementBlackberriesEnded" Source="Media\Blackberries.mp3"/>
<MediaElement x:Name="mediaElementBlueberries" LoadedBehavior="Manual" UnloadedBehavior="Manual" MediaEnded="mediaElementBlueberriesEnded" Source="Media\Blueberries.mp3"/>

*.cs

 if (audioindex == 1)
 {
     mediaElementStrawberries.Play();
 }
 if (audioindex == 2)
 {
     mediaElementBlackberries.Play();
 }
 if (audioindex == 3)
 {
     mediaElementBlueberries.Play();
 }

 public void mediaElementStrawberriesEnded(object sender, RoutedEventArgs e)
 {
        if (audioindex == 1)
        {
            mediaElemenStrawberries.Position = TimeSpan.Zero;
            mediaElementStrawberries.LoadedBehavior = MediaState.Play;
        }
        else if (audioindex == 2)
        {
            mediaElementBlackberries.Position = TimeSpan.Zero;
            mediaElementBlackberries.LoadedBehavior = MediaState.Play;
        }
        else if (audioindex == 3)
        {
            mediaElementBlueberries.Position = TimeSpan.Zero;
            mediaElementBlueberries.LoadedBehavior = MediaState.Play;
        }
    }

    private void mediaElementBlackberriesEnded(object sender, RoutedEventArgs e)
    {
        if (audioindex == 2)
        {
            mediaElementBlackberries.Position = TimeSpan.Zero;
            mediaElementBlackberries.LoadedBehavior = MediaState.Play;
        }
        else if (audioindex == 1)
        {
            mediaElementStrawberries.Position = TimeSpan.Zero;
            mediaElementStrawberries.LoadedBehavior = MediaState.Play;
        }
        else if (audioindex == 3)
        {
            mediaElementBlueberries.Position = TimeSpan.Zero;
            mediaElementBlueberries.LoadedBehavior = MediaState.Play;
        }
    }

1
好问题..我也想知道为什么两个视频不能同时播放?只有一个视频在播放,第二个视频没有播放。但是第二个视频有声音...这很奇怪! - NoWar
Peretz,我遇到了一个非常相似的问题。每次设置一个MediaElement的源,另一个MediaElement就会消失。 - Amadeusz Wieczorek
1个回答

0

我知道使用SoundPlayer和MediaElement只能使用单声道。所以如果你播放一个声音,然后尝试播放第二个声音,第二个声音会中断第一个声音。(单声道声音)

我猜你也遇到了类似的问题,不幸的是,我发现唯一解决这个问题的方法是使用XNA(现在已经停止支持),或者转向DirectX。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接