在Windows 10上,对MediaComposition.GetThumbnailAsync()的调用似乎会极大地泄漏内存。也许我遗漏了一些明显的东西,有人可以对此加以说明吗?

复制:

  • 创建空白的C#Universal Windows项目。
  • 在MainPage.xaml中添加按钮,如下所示:

  • <Button Click="Button_Click" Content="Click me" />
    
  • 将处理程序添加到MainPage.xaml.cs中,如下所示:
  • private MediaComposition _comp = null; private async void Button_Click(object sender, RoutedEventArgs e) { if (_comp == null) { var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/test.mp4", UriKind.Absolute)); var clip = await MediaClip.CreateFromFileAsync(file); _comp = new MediaComposition(); _comp.Clips.Add(clip); } using (ImageStream thumb = await _comp.GetThumbnailAsync(TimeSpan.FromSeconds(1), 0, 0, VideoFramePrecision.NearestFrame)) { Debug.WriteLine(GC.GetTotalMemory(true).ToString("N0")); } }
  • 根据VS的建议添加必需的using语句。
  • 在您的 Assets 文件夹中添加一些简短的.mp4并将其命名为test.mp4
  • 在x86中运行,然后单击几次按钮。在Process Explorer或内置VS诊断中观察内存使用量的增加。崩溃约800MB。
  • 最佳答案

    已获得Microsoft的确认,他们可以复制,这是一个错误。从15年11月20日开始在最新的WIN 10版本中修复

    09-06 14:23