首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#从元数据获取视频文件时长

C#从元数据获取视频文件时长
EN

Stack Overflow用户
提问于 2009-08-10 19:46:54
回答 11查看 34.5K关注 0票数 25

我正在尝试从文件中读取元数据。我只需要视频->长度属性,但是我找不到一种简单的方法来读取此信息。

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

代码语言:javascript
复制
Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video(str);
double duration = video.Duration;

然而,这抛出了一个LoaderLock异常,我不知道如何处理它。

有什么想法吗?

EN

回答 11

Stack Overflow用户

发布于 2009-08-16 15:20:37

其中许多详细信息都是由外壳程序提供的,因此您可以通过添加对COM库"Microsoft shell Controls and Automation“(Shell32)的引用,然后使用Folder.GetDetailsOf方法查询扩展的详细信息来完成此操作。

我最近正在寻找这个,在MSDN C#通用论坛上偶然发现了this very question。我最终将其作为FileInfo的一个扩展方法来编写:

代码语言:javascript
复制
    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 )并查询它们会快得多。请注意,我没有对索引是否可以更改做过多研究(我怀疑),这就是我采用字典方法的原因。

票数 11
EN

Stack Overflow用户

发布于 2009-08-10 20:24:07

看看这个链接到几个ffmpeg .Net实现的SO问题- Solid FFmpeg wrapper for C#/.NET。ffmpeg适用于大多数视频格式/编解码器。这样你就不需要担心编解码器安装在机器上了。

或者看看https://mediaarea.net/en/MediaInfo

票数 8
EN

Stack Overflow用户

发布于 2009-08-12 20:15:45

我只想评论Mikael的帖子,但我还没有足够的代表来做这件事。我同意他关于使用ffmpeg的观点,这样你就不需要安装编解码器了。你可以解析"ffmpeg -i your_filename“的输出,它只会转储一些关于视频的信息,包括视频的持续时间。

我不知道您使用的是什么编解码器,但一些容器实际上并不在元数据中存储持续时间(这在流容器中很常见,因为持续时间是未知的)。我不知道ffmpeg是如何处理这件事的,但它似乎以某种方式找到了它(也许是通过解析整个文件的时间码)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1256841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档