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

UWP应用使用AQS筛选视频文件却包含字幕文件的问题排查

解决UWP中筛选视频文件却包含字幕文件的问题

我之前也碰到过类似的困扰,咱们一步步来拆解和解决这个问题:

为什么会拿到srt等字幕文件?

你用的kind:=video这类AQS查询其实是Windows的“广义视频关联文件”筛选——系统会把视频库中和视频相关的附属文件(比如字幕、封面图)也归类进来,而不是只筛选真正包含视频流的媒体文件。这不是你AQS语法写错了,而是默认的kind筛选逻辑就是这么设计的。

几个可行的解决方案

1. 用更精准的AQS筛选真正的视频媒体文件

可以利用视频文件特有的属性来过滤,比如媒体时长——真正的视频文件肯定有播放时长,而字幕文件没有。对应的AQS语法是:

System.Media.Duration:>0

你可以把这个条件加到你的QueryOptions里,示例代码:

var queryOptions = new QueryOptions(CommonFileQuery.OrderByName);
queryOptions.ApplicationSearchFilter = "System.Media.Duration:>0";
var videoQuery = KnownFolders.VideoLibrary.CreateFileQueryWithOptions(queryOptions);
var videoFiles = await videoQuery.GetFilesAsync();

这个方法不需要硬编码扩展名,能自动识别所有带视频流的文件,兼容性更好。

2. 直接指定视频文件扩展名(更直观)

如果只需要支持常见的视频格式,可以直接用FileTypeFilter来限定扩展名,这样能彻底排除字幕文件:

var supportedVideoExtensions = new[] { ".mp4", ".mkv", ".avi", ".mov", ".wmv", ".flv", ".webm" };
var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, supportedVideoExtensions);
var videoQuery = KnownFolders.VideoLibrary.CreateFileQueryWithOptions(queryOptions);
var videoFiles = await videoQuery.GetFilesAsync();

缺点是需要维护一个扩展名列表,遇到小众格式可能会漏掉,但胜在简单直接。

3. 拿到文件后二次校验(最稳妥)

如果前两种方法还是有漏网之鱼,你可以在获取文件列表后,逐个验证文件是否为真正的视频文件——通过读取视频属性来判断:

var queryOptions = new QueryOptions(CommonFileQuery.OrderByName);
queryOptions.ApplicationSearchFilter = "kind:=video";
var videoQuery = KnownFolders.VideoLibrary.CreateFileQueryWithOptions(queryOptions);
var allFiles = await videoQuery.GetFilesAsync();

var realVideoFiles = new List<StorageFile>();
foreach (var file in allFiles)
{
    try
    {
        var videoProps = await file.Properties.GetVideoPropertiesAsync();
        // 有视频时长的才是真正的视频文件
        if (videoProps.Duration > TimeSpan.Zero)
        {
            realVideoFiles.Add(file);
        }
    }
    catch (Exception)
    {
        // 读取视频属性失败,说明不是视频文件,跳过
        continue;
    }
}

这个方法最稳妥,能100%排除非视频文件,但性能会稍差一点(需要逐个读取文件属性)。

内容的提问来源于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.21 06:57:18