AudioPlayerAgent流式处理-停止不会删除缓冲区

本文关键字:删除 缓冲区 处理 AudioPlayerAgent | 更新日期: 2023-09-27 18:22:03

我目前正在开发一个网络广播应用程序,如果用户按下暂停/停止键,流应该停止,当然,当他再次按下播放时,流应该继续。

我的问题是,那个球员。Stop()仅暂停曲目。如果再次按continue,前5秒不是从流中读取,而是从缓冲区中读取,然后它在几秒钟内不播放任何声音,然后再次开始从流中进行读取。

这对于网络广播应用程序来说是致命的。我该怎么修?或者如何删除缓冲区?

    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();
    }

AudioPlayerAgent流式处理-停止不会删除缓冲区

好的。。只是想让你们知道,我就是这么做的。我不知道是否有更好的方法,但这对我有效:

        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;

停止时放弃所有内容,重新开始播放时重新设置新内容如何?您正在使用的功能似乎更适合暂停静态内容。暂停对收音机来说没有多大意义。