如何从.mov文件中提取开始时间码和持续时间/长度元数据?

时间:2009-08-13 19:29:36

标签: c# .net quicktime

我在Windows上有C#.net客户端,需要从.mov文件中提取开始时间码和持续时间/长度元数据。谁在那里谁知道如何做到这一点?我在网上环顾四周但还没找到任何东西。提前感谢您的时间。

2 个答案:

答案 0 :(得分:0)

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

自己解析文件真的很难(我们在DirectShow过滤器中做过一次),所以我建议使用库来为你完成这项工作。请看例子 MediaInfoffmpeg

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

答案 1 :(得分:0)

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

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

通过扫描文件中的电影标题原子(类型为'mvhd')然后跳转到原子的时间刻度和持续时间字段(过去16个字节),可以找到电影时间刻度和持续时间原子类型字段的开头(您找到的'mvhd')。每个都是一个大端4字节无符号整数。

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

您可以在QuickTime File Format Specification中过多地了解QuickTime文件格式。 (MPEG-4文件格式实际上是基于QuickTime文件格式的,所以如果你对此有所了解,那么知识应该转移。)