【问题标题】:How to get specific information about media files (Duration, Bitrate, FPS, etc.)如何获取有关媒体文件的特定信息(持续时间、比特率、FPS 等)
【发布时间】:2010-01-29 03:15:05
【问题描述】:

我需要获取与使用 Finder 时在“获取信息” 上获取的信息相同的信息;更具体地说,我需要“更多信息”部分中的相同信息,例如持续时间、比特率、维度、编解码器、音频通道等。

要获得尺寸、类型等基本信息,我有:

// Getting the file's attributes
NSError *error;
NSFileManager *fm = [NSFileManager defaultManager];
NSDictionary *fileInfo = [fm attributesOfItemAtPath:fileName error:&error];

是否有任何本地 Cocoa 库来获取此信息?

【问题讨论】:

    标签: objective-c cocoa multimedia spotlight


    【解决方案1】:

    在使用 Finder 时,我需要获取与“获取信息”相同的信息,更具体地说,我需要与“更多信息”部分相同的信息,例如持续时间、比特率、维度、编解码器, 音频通道等。

    以与 Finder 相同的方式进行操作:Spotlight。 (不要让路径中的“Carbon”一词吓跑您:它是核心服务的一部分,因此它提供 64 位版本。)只需为您感兴趣的文件实例化一个 MDItem。

    另一种方法是使用 Foundation 自己的该框架的包装器(包含在该页面上),但是您需要执行 NSMetadataQuery 来搜索 kMDItemPath 是您感兴趣的文件路径的项目in. 很多不必要的麻烦——直接使用 MDItem 会让你更快。

    一个不错的好处是,它不仅适用于视频和音频文件。图像文件还包含 Finder 和您的应用可以显示的元数据。

    【讨论】:

    • 嘿彼得,你的回答是对的......谢谢!虽然我无法使用它,因为我无法获得不同文件的持续时间......我无法获得一致性......对于某些文件,持续时间被告知为 00:00:00,当视频是一个 00:50:00 上的 Finder 信息……我想知道 Finder 是如何做到的……也许 Apple 正在使用一些第三方库。顺便说一句,我将使用一些替代方案,直到我弄清楚如何使用 Apple 框架。
    • 这很奇怪。您是如何确定获得的持续时间的?
    • 我无法理解您的问题。好吧,如果有帮助,我已经获得了有关 finder 的信息并与 MDItem 进行了比较,正如我所说,在 MDItem 上,某些视频的时间为 00:00:00...我也尝试使用 ffmpeg,它比在Finder...有时 Finder 无法确定信息,但 ffmpeg 可以。你有什么想法吗?
    • 是的,这没问题,但是您知道如何使用 Spotlight 获取 fps 吗?我找不到任何参数。
    • 没有这样的属性。请参阅developer.apple.com/mac/library/documentation/Carbon/Reference/… 和电影文件的 mdls 输出。如果您需要,您应该提交增强请求。
    【解决方案2】:

    创建一个QTMovie 实例,然后使用-movieAttributes 消息查询其属性。

    【讨论】:

    • 是的...但是如何将其扩展到其他媒体文件(图像、音频)?
    • 它也适用于音频文件,但不适用于 QuickTime 无法处理的任何内容。
    猜你喜欢
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2016-04-03
    相关资源
    最近更新 更多