检测MOV文件的持续时间
本文关键字:持续时间 文件 MOV 检测 | 更新日期: 2023-09-27 18:01:25
我有一个用c#编写的客户端应用程序,想要读取MOV文件的持续时间。我必须在Windows窗体中创建并托管一个Quicktime COM控件,然后加载其中的电影并获得持续时间。这在我的情况下是不可行的,因为客户端应用程序不是windows窗体之一。
另一种方法,这是我实际做过的,是打开MOV文件raw,检查字节,直到你的剪辑('mvhd')的电影标题原子12个字节,并从那里获得时间尺度和持续时间。我不太喜欢这种方法,因为如果苹果将来更改文件格式,它可能无法工作。
我宁愿避免将MOV加载到控件,因为我只对剪辑的持续时间感兴趣,而不是其他。理想情况下,我需要提供一个字符串与路径的mov文件的应用程序,并获得持续时间像那样。有人用非托管代码做过吗?
首先,没有"内置"的方法来处理特殊的文件格式。你要么自己解析文件,要么让某个组件帮你解析。
实际上,如果您的代码遵循文档,解析并不是一个hack。您应该获得(在某些公司的情况下,购买)官方格式规范,并根据规范解析文件头。该规范是强制性的,所以您不应该期望相同文件类型的格式会发生变化。
你可以试着找到一个组件可以为你做这件事。包含用于显示影片的控件的库还可以包含一些实用程序类。当然,组件将以与您完全相同的方式解析头部,所以如果Quicktime格式发生变化(我个人怀疑),所有组件将以同样的方式失败。
读取原始文件是正确的方法。
对于将来阅读这篇文章的用户,您可以从以下链接找到描述。mov文件格式的Apple Quick Time File Format文档:
经典版本的QuickTime文件格式规范:
描述QuickTime文件格式规范经典版本的实际PDF
QuickTime文件格式规范的当前版本
还有另一种很好的方法可以做到这一点,如果你想找到quicktime .mov文件和其他媒体容器的持续时间或其他信息,它会给你提供一个选项来改进你的应用程序:使用MediaInfo.dll,你可以在你的项目中引用它,并找到持续时间和媒体文件的几乎所有其他方面。