我正在开发在线广播应用,并使用Microsoft background media sample作为起点。我已经为我的在线广播设置了URI的来源,但是当我开始在运行时更改频道时,它们与第一次播放的时间相同。我认为音频缓存不知何故。那么我怎样才能清除缓存或从实际时间开始播放所选频道而不是第一次启动它?
答案 0 :(得分:1)
很简单,你只能通过MediaPlaybackList类操作媒体播放器,所以让我们说你要切换到上一曲目,你想要删除当前曲目的缓存,而不是你应该使用方法SkipToPrevious playbackList.CurrentItem.Source.Reset();
所以看起来像这样
/// <summary>
/// Skip track and update UVC via SMTC
/// </summary>
private void SkipToPrevious()
{
smtc.PlaybackStatus = MediaPlaybackStatus.Changing;
playbackList.CurrentItem.Source.Reset();
playbackList.MovePrevious();
}
答案 1 :(得分:0)
如果在MyBackgroundAudioTask.cs中设置playbacklist = null,然后重新创建播放列表,则会清除缓存并开始实时流式传输。这可能是一个笨拙的解决方案,但似乎确实有效。
UpdatePlaylistMessageExtra UpdatePlaylistMessageExtra;
if (MessageService.TryParseMessage(e.Data, out UpdatePlaylistMessageExtra))
{
if (playbackList != null)
{
playbackList = null;
CreatePlaybackList(UpdatePlaylistMessageExtra.Songs); //Recreate to start from start and not cached stream
Debug.WriteLine("Playbacklist rebinded in BG");
BackgroundMediaPlayer.Current.AutoPlay = true;
}
return;
}