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

xamlで:

<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 に答える