gpt4 book ai didi

c# - 如何使用 Shell32 (Windows 10) 在 C# 中丢失视频文件的 "Frame height"和 "Frame width"属性?

转载 作者:可可西里 更新时间:2023-11-01 09:36:11 27 4
gpt4 key购买 nike

我试图在 C# 中使用 Shell32 确定视频文件的分辨率,但属性返回空字符串,尽管 Windows shell 显示信息很好。

请注意,我不能为此任务(DirectShow 或其他)合并任何第 3 方库。

对于不同的视频文件,此行为仍然存在。遗憾的是,here 中没有提供任何答案。很有帮助。

我正在使用以下代码提取信息:

Shell32.Shell shell = new Shell32.Shell();
Shell32.Folder objFolder;

objFolder = shell.NameSpace(Path.GetDirectoryName(videoFile.FullName));
FolderItem objFile = objFolder.ParseName(videoFile.Name);

List<string> arrHeaders = new List<string>();
for (int i = 0; i < 1000; i++) {
string header = objFolder.GetDetailsOf(null, i);
if (String.IsNullOrEmpty(header))
continue;
arrHeaders.Add(header);
}

var length = objFolder.GetDetailsOf(
objFile, arrHeaders.FindIndex(h => h == "Length"));
var resWidth = objFolder.GetDetailsOf(
objFile, arrHeaders.FindIndex(h => h == "Frame width"));
var resHeight = objFolder.GetDetailsOf(
objFile, arrHeaders.FindIndex(h => h == "Frame height"));

对于以下文件,我希望 resWidth 的值为 "1920"resHeight 的值为 "1080 " 但它们都包含空字符串。这两个属性都存在于 arrHeaders 中,特别是在我系统的索引 301 和 303 中。

Hearthstone.mp4 file properties

作为旁注,Length 属性按预期工作。

最佳答案

哇,对不起。我似乎完全跳过了我错误地枚举索引的事实,因为我跳过了空标题。 😀 问题解决了!

关于c# - 如何使用 Shell32 (Windows 10) 在 C# 中丢失视频文件的 "Frame height"和 "Frame width"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55902374/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com