如何清除MediaPlayer';UWP应用程序中的缓存?
在我的UWP应用程序中,我有一个MediaPlayer。当切换其源时,我发现之前的视频有一些残片。要解决这个问题,一个解决方案是在切换时清除MediaPlayer的缓存。但是我没有找到这种接口 更多 我用下面的GitHub链接做了一个演示。我使用Nico的建议调用MediaSource的Dispose()函数。但正如您所看到的,当在MainPage和VideoPage1之间切换时,视频剩余片段问题仍然存在 更多2 我粘贴我的代码如下。测试应该通过在主页和视频页面1之间来回切换来完成。然后你可以看到视频残片现象 但正如我所评论的,如果我们设置两次源,那么vide剩余片段现象就不存在了,为什么 还有其他官方解决方案吗如何清除MediaPlayer';UWP应用程序中的缓存?,uwp,Uwp,在我的UWP应用程序中,我有一个MediaPlayer。当切换其源时,我发现之前的视频有一些残片。要解决这个问题,一个解决方案是在切换时清除MediaPlayer的缓存。但是我没有找到这种接口 更多 我用下面的GitHub链接做了一个演示。我使用Nico的建议调用MediaSource的Dispose()函数。但正如您所看到的,当在MainPage和VideoPage1之间切换时,视频剩余片段问题仍然存在 更多2 我粘贴我的代码如下。测试应该通过在主页和视频页面1之间来回切换来完成。然后你可以看
mMediaPlayer.Source = ms;
mMediaPlayer.Source = ms;
测试代码:
public sealed partial class VideoPage1 : Page
{
MediaPlayer mMediaPlayer;
MediaSource ms;
public static int count;
public VideoPage1()
{
this.InitializeComponent();
NavigationCacheMode = NavigationCacheMode.Enabled;
mMediaPlayer = new MediaPlayer();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
count++;
if (count % 2 == 0)
ms = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/1.mp4"));
else
ms = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/2.mp4"));
// One solution: if we set Source twice, then
// the vide residual fragment phenomenon does not exist, but why?
// mMediaPlayer.Source = ms;
mMediaPlayer.Source = ms;
mMediaPlayer.Play();
VideoObj.SetMediaPlayer(mMediaPlayer);
}
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
mMediaPlayer.Pause();
ms.Dispose();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
Frame rootFrame = Window.Current.Content as Frame;
rootFrame.Navigate(typeof(MainPage));
}
}
如何在UWP应用程序中清除MediaPlayer的缓存
请检查这份文件。包含用于释放或重置非托管资源的。在切换到其他源之前,请手动调用它。它将清除上一个视频的剩余片段。要清除中间播放器,您应该清除args中的ResourceByteRangeOffset和ResourceByteRangeLength。此文档帮助您嗨,Nico,感谢您的回复!请查看我的主要帖子。我采用了你的方法,但没能解决这个问题。并提供了一个github演示代码。