1

私は現在ウェブラジオアプリを開発しています。ユーザーが一時停止/停止キーを押すとストリームが停止し、もちろんもう一度再生を押すとストリームが続行されます。

私が抱えている問題は、player.Stop()がトラックを一時停止するだけだということです。もう一度[続行]を押すと、最初の5秒間はストリームからではなくバッファから読み取られ、その後数秒間音が鳴らず、ストリームからの読み取りが再開されます。

これは、Webラジオアプリにとって致命的です。どうすれば修正できますか?または、どうすればバッファを削除できますか?

    protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
    {
        switch (playState)
        {
            case PlayState.TrackReady:
                player.Play();
                break;
            case PlayState.Stopped:
                player.Stop();
                break;
            case PlayState.Paused:
                player.Stop();
                break; 
        }

        NotifyComplete();
    }
4

2 に答える 2

2

わかりました..皆さんに知らせるために、これが私がしたことです。もっと良い方法があるかどうかはわかりませんが、これは私にとってはうまくいきます:

        protected override void OnPlayStateChanged(BackgroundAudioPlayer player, AudioTrack track, PlayState playState)
    {
        switch (playState)
        {
            case PlayState.Stopped:
                track.BeginEdit();
                track.Tag = track.Source.OriginalString;
                track.Source = new Uri("http://127.0.0.1", UriKind.Absolute);
                track.EndEdit();

                player.Track = track;
                break;


        protected override void OnUserAction(BackgroundAudioPlayer player, AudioTrack track, UserAction action, object param)
    {
        switch (action)
        {
            case UserAction.Play:
                if (player.PlayerState != PlayState.Playing)
                {
                    try
                    {
                        player.Play();
                    }
                    catch(Exception)
                    {
                        track.BeginEdit();
                        track.Source = new Uri(player.Track.Tag, UriKind.Absolute);
                        track.EndEdit();

                        player.Track = track;
                        player.Play();
                    }
                }
                break;
            case UserAction.Stop:
            case UserAction.Pause:
                if (player.Track.Source.OriginalString != "http://127.0.0.1/")
                {
                    player.Stop();
                }
                break;
于 2012-02-07T12:36:47.340 に答える
0

停止したときにすべてを捨てて、再生が再開したときに再び更新するのはどうですか?使用している機能は、静的コンテンツの一時停止に適しているようです。一時停止はラジオではあまり意味がありません。

于 2012-02-01T15:19:14.253 に答える