MediaElement不会播放mp3

时间:2013-11-28 07:20:22

标签: c# wpf mp3 mediaelement

在xaml中我有:

<Page.Background>
    <ImageBrush ImageSource="/TheseusAndTheMinotaur;component/Images/marbleBackground.jpg"/>
</Page.Background>
    <Grid x:Name="mainGrid" Margin="0" IsHitTestVisible="True">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="500" x:Name="gameArea"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>

    <MediaElement x:Name="footStep" Source="minotaurFoot.mp3" Volume="1" LoadedBehavior="Manual"/>
    <Button x:Name="btnExit" Content="Exit" HorizontalAlignment="Right" Margin="0,0,220,20" VerticalAlignment="Bottom" Width="75" Click="btnExit_Click" Grid.Column="2" IsHitTestVisible="True"/>
        <Canvas x:Name="pbxMap" Margin="10" Grid.Column="1" Background="#7F000000" IsHitTestVisible="True" Focusable="True"/>
    </Grid>

在我发起的方法中:

this.myGamePlayerPage.footStep.Play();

没有声音播放,但没有错误。任何想法为什么会这样?谢谢。

编辑:我将源代码更改为:Source="C:\newnew\TheseusAndTheMinotaur\minotaurFoot.mp3"并且可以正常运行。但这并不好。它不适用于其他的ocmputers。

1 个答案:

答案 0 :(得分:2)

您的设置似乎是正确的,但我想MediaElement无法找到minotaurFoot.mp3。注册MediaFailed - MediaElement的事件,并检查它是否被引发。传递给方法的ExceptionRoutedEventArgs应包含有关文件无法播放的原因的信息。

<强> XAML

<MediaElement x:Name="footStep" 
              MediaFailed="MediaFailedHandler"
              Source="minotaurFoot.mp3"
              Volume="1"
              LoadedBehavior="Manual"/>

<强> C#

public void MediaFailedHandler(object sender, ExceptionRoutedEventArgs e){
    // e.ErrorException contains information what went wrong when playing your mp3
}

<强>更新

您还需要将mp3复制到项目的输出文件夹中。这可以通过在高级设置Copy always中设置Copy if newerCopy to Output directory来完成。

在项目中选择mp3文件,右键单击打开ContextMenu。然后选择属性并在上面进行指定设置。