1

我正在使用 MediaElement 类并尝试播放我在解决方案资源管理器中添加的音频文件 (.mp3)(见下图)。

我在构造函数中使用以下代码

// Constructor
public MainPage()
{
    InitializeComponent();

    // Set the data context of the listbox control to the sample data
    DataContext = App.ViewModel;

    MediaElement el = new MediaElement();
    el.Source = new Uri("horse.mp3", UriKind.RelativeOrAbsolute);
    el.Play();
}

我还在下面添加了一个屏幕截图,只是为了了解 horse.mp3 文件所在的位置。

请帮我解决这个问题。

在此处输入图像描述

4

3 回答 3

2

MP3 文件的构建操作是什么?对于您使用的 URI 格式,它应该是 Build Action = Content。

此外,您实际上并没有将 MediaElement 添加到您的页面。MediaElement 是一种视觉控件,需要成为视觉树的一部分才能进行操作。如果你想在 WP7/WP8 上做简短的音效,你应该使用 XNA 的 SoundEffect。您必须非常具体地预先格式化您的音轨,但您将受益于它与用户当前播放的音频重叠并且不需要将其添加到视觉树中。

于 2013-01-26T23:36:19.780 回答
0

在xml中:

<Button x:Name="PlayFile"
            Click="PlayFile_Click_1"
            Content="Play mp3" />

在代码中:

MediaElement MyMedia = new MediaElement();
// Constructor
public MainPage()
{
    InitializeComponent();

    this.LayoutRoot.Children.Add(MyMedia);

    MyMedia.CurrentStateChanged += MyMedia_CurrentStateChanged;
    MyMedia.MediaEnded += MyMedia_MediaEnded;
}

void MyMedia_MediaEnded(object sender, RoutedEventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Ended event " + MyMedia.CurrentState.ToString());
    // Set the source to null, force a Close event in current state
    MyMedia.Source = null;
}

void MyMedia_CurrentStateChanged(object sender, RoutedEventArgs e)
{

    switch (MyMedia.CurrentState)
    {
        case System.Windows.Media.MediaElementState.AcquiringLicense:
            break;
        case System.Windows.Media.MediaElementState.Buffering:
            break;
        case System.Windows.Media.MediaElementState.Closed:
            break;
        case System.Windows.Media.MediaElementState.Individualizing:
            break;
        case System.Windows.Media.MediaElementState.Opening:
            break;
        case System.Windows.Media.MediaElementState.Paused:
            break;
        case System.Windows.Media.MediaElementState.Playing:
            break;
        case System.Windows.Media.MediaElementState.Stopped:
            break;
        default:
            break;
    }

    System.Diagnostics.Debug.WriteLine("CurrentState event " + MyMedia.CurrentState.ToString());
}

private void PlayFile_Click_1(object sender, RoutedEventArgs e)
{
    // Play Awesome music file, stored as content in the Assets folder in your app
    MyMedia.Source = new Uri("Assets/AwesomeMusic.mp3", UriKind.RelativeOrAbsolute);
    MyMedia.Play();
}
于 2013-09-23T23:02:40.483 回答
0

您必须添加

el.AutoPlay=true

希望这有帮助。

于 2014-02-27T06:46:30.817 回答