4

我在 Windows 上有 C# .NET 客户端,需要从 .mov 文件中提取开始时间码和持续时间/长度元数据。有谁知道怎么做吗?我在互联网上四处寻找,但还没有找到任何东西。

4

2 回答 2

0

如果您可以调用非托管代码,您也许可以只使用 QuickTime for Windows 来获取此信息。

否则,您想要的所有信息都在电影标题原子中。所有 QuickTime 电影都从时间 0 开始(所以问题解决了一半)并在其指定的持续时间结束,这等于其最长轨道的持续时间。时间是根据电影时间尺度来指定的,它定义了每秒的时间单位数;默认值为每秒 600 个单位。

您可以通过扫描文件查找类型为 的电影头原子的文件来找到电影时间尺度和持续时间'mvhd',然后向前跳到原子类型字段开始后 16 个字节的原子的时间尺度和持续时间字段(您找到的“mvhd”)。每个都是一个大端的 4 字节无符号整数。

然而,QuickTime 是一种容器格式,并非所有电影文件都包含电影标题。有些只是指向实际电影数据所在的其他位置的参考或流式电影。即使存在电影标题,也不需要它实际上是文件数据的标题。

您可以在QuickTime 文件格式规范中阅读太多关于 QuickTime 文件格式的内容。(MPEG-4 文件格式实际上是基于 QuickTime 文件格式,所以如果你对此有所了解,知识应该转移。)

于 2009-09-13T04:19:02.380 回答
0

我不知道任何能够解析 .mov 文件的 C# 库。您可以在您的环境中调用非托管代码吗?(需要 FullTrust 权限)

自己解析文件真的很困难(我们曾经在 DirectShow 过滤器中这样做过),所以我建议使用库来为您完成这项工作。例如在 MediaInfoffmpeg

MP4 容器与 .mov 文件非常相似,因此您还可以使用mp4box等 MP4 工具来提取非常详细的信息(例如开始时间码)

于 2009-08-13T20:02:17.617 回答