用于视频文件类型的 uwp app AdvancedQuerySyntax
uwp app AdvancedQuerySyntax for video file types
在我的 uwp 应用程序中,我从 KnownFolder.VideoLibrary 获取视频文件,我正在使用 QueryOptions 来获取它们,所以利用这一点,我正在尝试使用 AdvancedQuerySyntax 这样我只能获取视频文件,但实际上我也获取了像 srt 这样的字幕文件。我在这里做错了什么?是我写错的AQS语法吗?我认为根据这种语法,subs 文件也被视为视频文件,有没有办法将其缩小到只获取不包括字幕文件的视频文件?或者我可以得到一个 link 到文档,在那里我可以知道什么是扩展类型列表,这个语法实际上会 return?所以我可以相应地管理它?
代码
videoFileOptions = new QueryOptions()
{
IndexerOption = IndexerOption.OnlyUseIndexerAndOptimizeForIndexedProperties//check sort order later
};
string videoFilter = "System.Kind:=System.Kind#Video";
videoFileOptions.ApplicationSearchFilter += videoFilter;
videoFileOptions.SetPropertyPrefetch(PropertyPrefetchOptions.VideoProperties, RequiredVideoProperties);
videoFileOptions.SetThumbnailPrefetch(ThumbnailMode.VideosView, thumbnailRequestedSize, ThumbnailOptions.UseCurrentScale);
This is the line where I am providing the filter.
string videoFilter = "System.Kind:=System.Kind#Video";
简短回答:.srt 和其他字幕文件被归类为视频文件,因为任何支持播放的应用程序都可能需要访问 srt 文件。
您可以添加应用程序搜索过滤器 ext:<>.srt
以从结果中删除 srt 文件。
长答案:不可避免的问题是为什么不为 Kind:Subtitles 或其他东西设置另一种类型?为什么将它们包含在 Kind:Video 中?
除了 "does this extension make sense as a video" 之外,Kind 映射还有另一个压力吗?这一切都回到 Windows Phone 上的 SD 卡访问。
查看 Windows8 访问 SD 卡的现代应用程序必须为他们希望在 SD 卡上看到的任何文件类型声明文件启动体验。例如,这意味着视频应用程序需要 mp4、avi 等文件启动体验。但是,在 Windows Phone 上,这将不起作用,因为应用程序无法覆盖 mp4 或 avi 的默认系统应用程序(改天这里有另一个故事)。所以我们需要另一种方法来让应用程序访问 SD 卡上的 mp4 文件。
解决方案是,既然 UI 已经说过 "Grant this app access to Videos and your SD card" 那么任何同时具有视频库功能和 SD 卡访问权限的应用程序都应该可以访问您的 Kind.Video 上的所有文件SD卡。因此 Kind.Video 不仅意味着 "Video files",而且还意味着 "Files a video app would want access to"。
有了这个稍微改变的定义,这意味着内置视频播放器需要的任何文件突然包含在 Kinds.Video 映射中。这是映射中 .srt 文件的来源。
作为负责做出此类映射决定的人之一,我想借此机会向我的混乱道歉,并保证我不会像你在看这个设计时想象的那样脑残.大概
在我的 uwp 应用程序中,我从 KnownFolder.VideoLibrary 获取视频文件,我正在使用 QueryOptions 来获取它们,所以利用这一点,我正在尝试使用 AdvancedQuerySyntax 这样我只能获取视频文件,但实际上我也获取了像 srt 这样的字幕文件。我在这里做错了什么?是我写错的AQS语法吗?我认为根据这种语法,subs 文件也被视为视频文件,有没有办法将其缩小到只获取不包括字幕文件的视频文件?或者我可以得到一个 link 到文档,在那里我可以知道什么是扩展类型列表,这个语法实际上会 return?所以我可以相应地管理它?
代码
videoFileOptions = new QueryOptions()
{
IndexerOption = IndexerOption.OnlyUseIndexerAndOptimizeForIndexedProperties//check sort order later
};
string videoFilter = "System.Kind:=System.Kind#Video";
videoFileOptions.ApplicationSearchFilter += videoFilter;
videoFileOptions.SetPropertyPrefetch(PropertyPrefetchOptions.VideoProperties, RequiredVideoProperties);
videoFileOptions.SetThumbnailPrefetch(ThumbnailMode.VideosView, thumbnailRequestedSize, ThumbnailOptions.UseCurrentScale);
This is the line where I am providing the filter.
string videoFilter = "System.Kind:=System.Kind#Video";
简短回答:.srt 和其他字幕文件被归类为视频文件,因为任何支持播放的应用程序都可能需要访问 srt 文件。
您可以添加应用程序搜索过滤器 ext:<>.srt
以从结果中删除 srt 文件。
长答案:不可避免的问题是为什么不为 Kind:Subtitles 或其他东西设置另一种类型?为什么将它们包含在 Kind:Video 中?
除了 "does this extension make sense as a video" 之外,Kind 映射还有另一个压力吗?这一切都回到 Windows Phone 上的 SD 卡访问。
查看 Windows8 访问 SD 卡的现代应用程序必须为他们希望在 SD 卡上看到的任何文件类型声明文件启动体验。例如,这意味着视频应用程序需要 mp4、avi 等文件启动体验。但是,在 Windows Phone 上,这将不起作用,因为应用程序无法覆盖 mp4 或 avi 的默认系统应用程序(改天这里有另一个故事)。所以我们需要另一种方法来让应用程序访问 SD 卡上的 mp4 文件。
解决方案是,既然 UI 已经说过 "Grant this app access to Videos and your SD card" 那么任何同时具有视频库功能和 SD 卡访问权限的应用程序都应该可以访问您的 Kind.Video 上的所有文件SD卡。因此 Kind.Video 不仅意味着 "Video files",而且还意味着 "Files a video app would want access to"。
有了这个稍微改变的定义,这意味着内置视频播放器需要的任何文件突然包含在 Kinds.Video 映射中。这是映射中 .srt 文件的来源。
作为负责做出此类映射决定的人之一,我想借此机会向我的混乱道歉,并保证我不会像你在看这个设计时想象的那样脑残.大概