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();
}
好的。。只是想让你们知道,我就是这么做的。我不知道是否有更好的方法,但这对我有效:
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;
停止时放弃所有内容,重新开始播放时重新设置新内容如何?您正在使用的功能似乎更适合暂停静态内容。暂停对收音机来说没有多大意义。