检测MOV文件持续时间

时间:2011-07-06 12:37:33

标签: c# quicktime duration clip mov

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

我实际上做的另一种方法是打开原始的MOV文件,检查字节,直到超过剪辑的电影标题原子('mvhd')12个字节,并获得时间刻度和持续时间从那里。这个黑客我不满意,因为如果Apple将来更改文件格式可能无法正常工作。

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

4 个答案:

答案 0 :(得分:5)

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

事实上,只要你的代码遵守文档,解析就不是黑客攻击。您应该获得(在某些公司的情况下,购买)官方格式规范,并根据规范解析文件头。规范是强制性的,因此您不应期望格式会针对相同的文件类型进行更改。

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

Classic Version of the QuickTime File Format Specification

Actual PDF describing the Classic Version of the QuickTime File Format Specification

Current Version of the QuickTime File Format Specification

答案 3 :(得分:-1)

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