1

ビデオの再生には MediaElement を使用し、オーディオの再生には BackgroundAudioPlayer を使用しています。

これがケースです。

BackgroundAudioPlayer を介してリモート オーディオを再生しています。次に、ビデオを再生したいのですが、MediaElement がビデオの再生を開始する前に、BackgroundAudioPlayer のベスト プラクティスで提案されているように、BackgroundAudioPlayer.Close を呼び出しています。

MediaElement and the BackgroundAudioPlayer

Care must be taken when mixing BackgroundAudioPlayer and MediaElement for audio playback.

1. Close() must be called before switching to MediaElement playback.

2. There is only one media queue. Your application cannot pause background audio, play something with MediaElement then resume the background audio stream.

しかし、ビデオを再生した後、オーディオをもう一度再生したいと思います。

// Play audio result
BackgroundAudioPlayer.Instance.Track = new AudioTrack(new Uri(audioSearchResult.Url, UriKind.Absolute), audioSearchResult.Title, null, null, null, 
                AudioPlayer.TrackStateBuffering, EnabledPlayerControls.All);
BackgroundAudioPlayer.Instance.Play();

InvalidOperationExceptionコードの最初の行に「バックグラウンド オーディオ リソースが利用できなくなりました」と表示されます。では、MediaElement を使用した後、アプリで BackgroundAudioPlayer を再利用するにはどうすればよいでしょうか?

編集:

MediaElement の代わりに MediaPlayerLauncher を使用すると、MediaPlayerLauncher の起動時にアプリが廃棄されているため、2 回目にオーディオが再生されます。しかし、MediaElement と BackgroundAudioPlayer を 1 つのアプリに混在させることは可能ですか?!?! MS からの別の悪夢のようです:(

4

3 に答える 3

1

BackgroundAudioPlayer.Instance.Close()メディア要素の再生を開始する前に呼び出す必要があります。シンプルなバックグラウンド オーディオ エージェント (ストリーミングではない) を使用して、WP7.1 と WP8 の両方のエミュレーターでこれを試しました。この呼び出しがなければ、一貫してInvalidOperationExceptions が表示されます。これにより、動作が大幅に改善されます。

例えば:

    private void ButtonPlayMediaElement(object sender, RoutedEventArgs e)
    {
        BackgroundAudioPlayer.Instance.Close();
        mediaElement.Source = new Uri("http://wpdevpodcast.episodes.s3.amazonaws.com/Episode_093_Were_All_Stickmen.mp3", UriKind.Absolute);
        mediaElement.Play();
    }

また、UI からトラックを追加していますGetNextTrack。バックグラウンド オーディオ エージェントで実際にこれを行う必要があります。

于 2012-12-10T12:16:43.223 に答える
0

アプリケーションでオーディオメディアコンテンツとビデオメディアコンテンツの両方を使用する場合は、 !と混合MediaElementしないでください。BackgroundAudioPlayerと一緒に使用MediaLauncherし、もちろん前BackgroundAudioPlayerに電話することを忘れないでくださいBackgroundAudioPlayer.Instance.Close()MediaLauncher.Show()

于 2012-12-22T15:34:06.303 に答える