gpt4 book ai didi

C# 从元数据中获取视频文件持续时间

转载 作者:IT王子 更新时间:2023-10-29 04:24:49 26 4
gpt4 key购买 nike

我正在尝试从文件中读取元数据。我只需要 Video -> Length 属性,但是我无法找到读取此信息的简单方法。

我认为这会相当容易,因为它在资源管理器中默认可见,但是这看起来比我预期的要复杂得多。我最接近的是使用:

Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video(str);
double duration = video.Duration;

然而这会引发 LoaderLock 异常,我不知道如何处理它。

有什么想法吗?

最佳答案

这些详细信息中有许多是由 shell 提供的,因此您可以通过添加对 COM 库“Microsoft Shell 控件和自动化”(Shell32) 的引用,然后使用 Folder.GetDetailsOf 方法查询扩展详细信息来实现.

我最近在寻找这个并遇到了 this very question在 MSDN C# General 论坛上。我最终将其写为 FileInfo 的扩展方法:

    public static Dictionary<string, string> GetDetails(this FileInfo fi)
{
Dictionary<string, string> ret = new Dictionary<string, string>();
Shell shl = new ShellClass();
Folder folder = shl.NameSpace(fi.DirectoryName);
FolderItem item = folder.ParseName(fi.Name);

for (int i = 0; i < 150; i++)
{
string dtlDesc = folder.GetDetailsOf(null, i);
string dtlVal = folder.GetDetailsOf(item, i);

if (dtlVal == null || dtlVal == "")
continue;

ret.Add(dtlDesc, dtlVal);
}
return ret;
}

如果您要查找特定的条目,您可以执行类似的操作,但找出这些条目所在的索引(我相信长度是索引 27)并查询它们会快得多。请注意,我没有对索引是否可以更改进行太多研究(我对此表示怀疑),这就是我采用字典方法的原因。

关于C# 从元数据中获取视频文件持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256841/

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