Mac OS X中与DirectShow和GraphEdit等效的技术是什么?

7

如果你是Mac OS X的新手,熟悉Windows。Windows有DirectShow,许多内置过滤器,COM编程和GraphEdit,可以快速地在代码中构建图形并进行调试。

现在我要用Mac来处理相机、网络摄像头、麦克风、色彩空间、文件分割、同步、渲染、文件读取、文件保存等等,这些都是我在使用DirectShow时已经习以为常的东西。但是在Mac上,到目前为止我还没有找到任何类似的工具!我不知道应该去哪里寻找或者说我正在尝试探索如何在Mac上轻松处理媒体,同时又能够通过编程实现对媒体进行操作。

我看到了一些弱化的建议,比如使用gstreamer或QT库,但我无法相信这是Apple的最佳解决方案。我也看过一些QuickTime文档,但我并不想做转换、精灵、广播等等。

由于我的思维方式是基于DirectShow的,这意味着我不知道苹果公司是如何提供类似DirectShow的功能的。我不知道正确的关键词,也不知道应该去哪里寻找。书籍?我买了几本。现在我可能可以写一些代码来编辑你姐姐的婚礼视频(如果我在这个问题上没有取得进展,下一步我可能会问你这值多少钱),但是对于识别可用的过滤器以及如何将它们串联起来……我一无所知。有什么建议吗?


我相信QuickTime是这个。QT 是 iTunes 底层所使用的。请查看这个全屏视频播放的 示例代码 - Stephen Furlani
1
不对!我错了。请尝试查阅Core Video,其中提到了过滤器。 - Stephen Furlani
谢谢你的指引。我最初对Core Video的看法可能有误导。它似乎是用于从视频中提取帧,而不是我要进行的方向。 - Joe Raglenid
1个回答

10

目前,Mac上的视频处理正在经历一次巨大的转变。QuickTime非常老,但也很强大,因此它已经在过去的5年左右进行了逐步替换的过程。

话虽如此,QTKit是QuickTime子集(捕获、播放、格式转换和基本视频编辑),将得到支持。传统的QuickTime API目前仍然存在,并且可能会一直保留,至少在其主要功能在其他地方得到支持之前,但仅限于32位。对于某些涉及复杂视频内容的情况,您可能需要在某些地方使用它。

目前,iOS领先于Mac,因为它可以从头开始使用AV Foundation。Mac媒体框架的未来可能直接是AV Foundation(QTKit是其顶部的轻量级外壳)或类似QTKit的扩展。

对于音频,有Mac和iOS上的Core Audio,不会很快消失。它相当强大,但在某些地方有点晦涩。幸运的是,在线支持非常好;邮件列表是一个必不可少的资源。

对于过滤器和帧级处理,正如其他人所提到的,你可以使用Core VideoCore Image。 对于运动图形,可以使用包括图形编辑器和插件架构以添加自己的补丁的Quartz Composer。 对于编程过程动画和轻松混合渲染模型(OpenGL,Quartz,视频等),可以使用Core Animation
当然,除了所有这些之外,在内置功能无法实现所需功能时,你也可以使用开源库。

针对您下方的评论:

在QuickTime(和QTKit)中,音频和视频等各种数据类型都表示为轨道。可能不会立即清楚QuickTime可以打开音频文件格式以及视频文件格式。将音频和视频组合的常见方法如下:

  1. 使用视频文件创建QTMovie
  2. 使用音频文件创建QTMovie
  3. 取代音频并将其添加到具有视频的QTMovie中的QTTrack对象中。
  4. 压缩电影,以使其不仅含有对其他电影的引用,而且实际上包含音频数据。
  5. 将电影写入磁盘。

这里有来自Blender的一个例子。你将看到在end_qt函数中如何进行A/V混合。还有一些Core Audio的使用(AudioConverter*)。(在quicktime_export.c中有一些经典的QuickTime导出代码,但似乎不涉及音频部分。)


首先,感谢您提供如此全面的信息。我仍在努力理解它。暂且不论一种技术正在取代另一种技术。似乎有太多的移动部件,需要注意的许多不同领域。从这个角度来看,这种哲学与DirectShow非常不同。如果我想处理一些音频、处理一些视频,然后将它们合并,并确保它们基于捕获时间同步,我应该去哪里寻找?在DirectShow中,这是显而易见的。在Mac方面,这种组织方式表面上似乎是一个事后的想法。 - Joe Raglenid
请查看我的编辑答案... 我的回复太长了,不适合评论。 - Nicholas Riley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接