0

我正在使用 xcode 在 ios 上编写应用程序,经过大量工作后,我发现该功能实际上取决于方法调用的准确性。在代码中逐行调用它们并没有帮助,它们仍然以 tp 150 ms 的差异相互调用。所以我需要让两种方法以最小的时间差运行,因此“同时”。我正在执行的这两个任务实际上是音频和视频任务,所以我知道它可能还包括进程内延迟和延迟,所以我想知道你们可能对如何同步音频任务和视频任务有任何了解,所以他们开始一起跑步,时间间隔非常小。我尝试使用调度队列和类似的东西,但它们不起作用。

如果我不够清楚,我会很乐意详细说明。谢谢!

4

4 回答 4

2

你不能让一个中断驱动的多任务操作系统表现得像一个实时操作系统。

它只是不那样工作。

您需要使用各种多媒体 API 来设置音频和视频在其中同步的播放上下文(我不知道)。

于 2012-08-08T23:53:55.773 回答
0

Apple 在同步音频和视频方面拥有 API 和文档。 http://developer.apple.com

于 2012-08-08T23:52:44.397 回答
0

显然,按顺序(串行)调用方法不会满足您的要求,因为每个方法调用都需要一定的时间,在此期间后续方法将被阻塞。

要同时运行多个通用任务(可能在现代多核设备上真正同时运行),您确实需要通过“调度队列和类似的东西”进行线程化。GCD 肯定起作用,因此您需要详细说明“它们不起作用”是什么意思。

但这一切可能都是徒劳的,因为您不是在谈论通用任务。如果您正在处理音频和视频任务,那么您真的不应该在 CPU 上使用自己的代码来完成所有这些工作;你需要硬件加速,Apple提供了框架来帮助。我可能会先看看AV Foundation框架,然后,根据你想要做什么(你在你的问题中并没有真正说......)看看不同的OpenAL核心视频核心音频。(有一关于后者的书好评如潮,但我自己没有看过,而且说实话,我不是 A/V 开发人员。)

于 2012-08-08T23:57:20.607 回答
0

您可能知道,在任何多任务环境中(尤其是在单核设备上),您将无法保证正在执行的语句之间的时间安排。

但是,由于您提到了音频和视频的播放,Apple 确实提供了一些基础知识,可以通过其框架实现这一点。

AVSynchronizedlayer - 如果您的某些视频或音频可以从AVPlayerItem(支持多种格式)播放,您可以构建与其同步的其他事件树,从关键帧动画到其他 AVPlayerItem。

如果您特别需要多个音轨,那么 Core Audio 中也有一些更简单的结构可以做到这一点。

如果你能给出一个更具体的例子来说明你的需求,那么有人可能会提供更多的想法。

于 2012-08-09T00:02:15.093 回答