0

我有一个用 C# 编写的客户端应用程序,并且想要读取 MOV 文件的持续时间。我必须在 Windows 窗体中创建和托管 Quicktime COM 控件,然后在其中加载电影并获取持续时间。这在我的情况下是不可行的,因为客户端应用程序不是 Windows 窗体。

我实际上已经完成的另一种方法是打开原始MOV文件,检查字节直到您超过剪辑的电影头原子('mvhd')12个字节并从那里获取时间尺度和持续时间. 我不喜欢这种 hack,因为如果 Apple 将来更改文件格式,它可能无法正常工作。

我宁愿避免将 MOV 加载到控件中,因为我只对获取剪辑的持续时间感兴趣,而没有别的。理想情况下,我需要为应用程序提供一个带有 mov 文件路径的字符串,并获得这样的持续时间。有人用非托管代码做过吗?

4

4 回答 4

5

首先,没有“内置”方式来处理特殊文件格式。您必须自己解析文件,或者让一些组件为您完成。

事实上,只要您的代码符合文档,解析就不是黑客攻击。您应该获取(如果是某些公司,请购买)官方格式规范,并根据规范解析文件头。规范是强制性的,因此您不应该期望格式会因相同的文件类型而改变。

您可以尝试找到可以为您执行此操作的组件。包含用于显示电影的控件的库也可以包含一些实用程序类。当然,组件会以与您完全相同的方式解析标题,因此如果 Quicktime 格式会发生变化(我个人对此表示怀疑),所有组件都会以同样的方式失败。

于 2011-07-06T12:54:16.930 回答
2

读取原始文件是正确的方法。

于 2011-07-06T12:53:50.390 回答
0

对于阅读这篇文章的未来用户,您可以从以下链接中找到描述 .mov 文件格式的 Apple Quick Time 文件格式文档:

QuickTime 文件格式规范的经典版本

描述 QuickTime 文件格式规范的经典版本的实际 PDF

当前版本的 QuickTime 文件格式规范

于 2015-02-05T17:16:17.837 回答
-1

如果您想查找 quicktime .mov 文件和其他媒体容器的持续时间或其他信息,还有另一种好方法可以让您选择后者来改进您的应用程序:使用您可以参考的 MediaInfo.dll它在您的项目中并找到持续时间以及媒体文件的几乎所有其他方面。

于 2013-02-07T19:20:22.327 回答