1

アプリに固有のシナリオがあります。メトロ アプリの音楽ファイル プレイリストを XML で管理しています。そして、このような音楽ファイルの実際のパスを保存します

D:\マイメディア\1.mp3

XAML ページにメディア要素があり、そのソースを次のように設定しています。

 mediaElement.Source = new Uri(@"D:\MyMedia\1.mp3", UriKind.Absolute);
 mediaElement.Play();

しかし、メディアを再生しておらず、このようなエラーが発生しています

MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED : HRESULT - 0x80070005

それで、絶対パスを使用してメトロアプリのMediaElementでメディアファイルを再生する方法を教えてください。または、ローカル ファイルのストリームを取得して、Metro アプリの mediaElement でこのメディアを再生する方法を教えてください。

4

4 に答える 4

0

ユーザーの PC でアクセスできる場所の数は限られています。「D:\Mymedia」はそれらの 1 つではありません。必要な情報はすべて、Microsoft のヘルプに記載されています。次の 2 つの記事をご覧ください。

于 2013-06-30T21:03:04.210 に答える
0

これは、ファイル ピッカーがなくても実行できます。アプリ マニフェストにミュージック ライブラリ機能を追加し、音楽がマイ ミュージックまたは SD カードにあることを確認し、KnownFolders.MusicLibrary を使用するだけです。

要するに、質問の音楽テーマに沿って:

「ファイルピッカーと思うかもしれません...

...しかし、必要なのは StorageFile だけです"

    //
    // Opens and plays song titled "[Cars]You_Might_Think.mp3"
    // in the 80s folder.
    //
    // IMPORTANT: the example song must be in the user's Music
    // folder or SD card to be found.   Also, the app manifest
    // must have 'Music Library' capabilities enabled.
    //
    // 
    //
    async void OpenAndPlayAwesomeSongFromThe80s()
    {            
        Windows.Storage.StorageFolder folder = KnownFolders.MusicLibrary;

        StorageFile song = await folder.GetFileAsync("80s\\[Cars]You_Might_Think.mp3");

        if (song != null)
        {
            IRandomAccessStream stream = await song.OpenAsync(Windows.Storage.FileAccessMode.Read);

            if (stream != null)
            {
                mediaElement = new MediaElement();
                mediaElement.SetSource(stream, song.ContentType);
                mediaElement.Play();
            }
        }
    }
于 2015-06-22T06:02:58.440 に答える