You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

UWP中如何将StorageItemThumbnail转换为RandomAccessStreamReference?

解决UWP中StorageItemThumbnail转RandomAccessStreamReference的问题

嘿,我懂你遇到的这个类型不匹配的麻烦了——你通过GetThumbnailAsync拿到的是StorageItemThumbnail,但MediaItemDisplayProperties.Thumbnail需要的是RandomAccessStreamReference,直接赋值肯定会报错。别慌,这个转换其实很简单,我来帮你把代码改对:

核心解决思路

StorageItemThumbnail本身就实现了IRandomAccessStreamWithContentType接口,而RandomAccessStreamReference刚好提供了CreateFromStream静态方法,能直接把它转换成我们需要的类型。另外记得用using包裹流操作,避免内存泄漏。

修改后的完整代码

var mediaPlaybackItem = new MediaPlaybackItem(MediaSource.CreateFromStorageFile(myVideoFile));
MediaItemDisplayProperties props = mediaPlaybackItem.GetDisplayProperties();
props.Type = Windows.Media.MediaPlaybackType.Video;
props.VideoProperties.Title = CurrentVideo.MyVideoFile.DisplayName;

// 转换缩略图流并赋值
using (var thumbnailStream = await CurrentVideo.MyVideoFile.GetThumbnailAsync(ThumbnailMode.VideosView))
{
    if (thumbnailStream != null)
    {
        props.Thumbnail = RandomAccessStreamReference.CreateFromStream(thumbnailStream);
    }
}

mediaPlaybackItem.ApplyDisplayProperties(props);

额外提醒

  • 空值检查不能少:有些视频文件可能没有内嵌缩略图,拿到的thumbnailStream会是null,直接调用CreateFromStream会触发空引用异常,一定要先判断。
  • 缩略图模式可选:如果需要更高清的单张缩略图,可以把ThumbnailMode.VideosView换成ThumbnailMode.SingleItem,适合详情页展示。
  • 流资源要释放:用using语句自动回收StorageItemThumbnail的资源,这是UWP开发里的最佳实践,能避免不必要的内存占用。

内容的提问来源于stack exchange,提问作者Muhammad Touseef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:24:42