检测MOV文件的持续时间

Mic*_*ali 0 c# quicktime duration clip mov

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

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

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

Vla*_*lad 5

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

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

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