下载时如何播放QuickTime电影?

时间:2012-04-22 11:17:11

标签: objective-c macos cocoa download qtkit

我正在编写一个可以将不同来源的视频下载到本地硬盘的mac应用程序。到目前为止效果很好,但我想允许用户在下载这些视频时播放这些视频。浏览QTKit的文档,我找不到任何方法可以将电影数据分段地提供给QTMovie对象。

有没有办法可以通过QTKit,AVFoundation或其他系统框架实现这一目标?我真的想避免为此引入ffmpeg或其他第三方库。

2 个答案:

答案 0 :(得分:3)

问题在于QuickTime电影的工作原理。它们不是基于流的文件,因此一次向一个块提供信息通常没有用。 相反,它们是基于原子的文件,并允许原子以任何顺序出现 根据QuickTime影片的创建方式,“moov”原子(提供重要信息并且是解释媒体数据所必需的)可以(通常是)在文件的末尾。如果它在最后,则在完全下载之前不可能播放电影。如果moov数据在开头(例如,如果某人使用“准备Internet”选项保存了电影),则QuickTime将能够立即开始播放该文件。

只有像MPG传输流这样的格式才能用于流媒体或“渐进式下载”。

答案 1 :(得分:2)

您应该使用AV Foundation框架而不是QTKit。您要做的第一件事是阅读AV Foundation Programming Guide。尽管该指南主要涉及iOS,但自10.7以来,OS X上提供了AV Foundation功能。