objective-c - 如何将视频(图像)输入与外部源同步?

标签 objective-c ios performance image-processing video-processing

让我们假设有一个 LED。它以 0.5 秒的周期闪烁。 所以在第 0 => 0.5 秒开始,从第 0.5 => 1 秒开始,它关闭,从第 1 => 1.5 秒开始再次开启。

假设我想从外部摄像头(比如 iPhone 摄像头)读取该输入。 我所做的是: 1. 获取输入流,从中制作图像,扫描图像是否存在一定数量的白色像素,如果存在,则 LED 亮起,我将“1”写入我的文件。如果不存在,我写“0”。 我每秒读取输入流两次。所以一般来说,如果一切顺利并且我的处理不会滞后于某个地方,我会得到很好的结果。但想象一下,如果:

0 => 0.5 LED 亮起 0.49 => 我的相机读取信息为“1”

0.5 => 1.0 LED 熄灭 0.99 => 我的相机读取信息为“0”

1.0 => 1.5 LED 亮起 1.51 => 我的相机滞后并将其读取为“0”

所以我们这里有数据损坏。 问题是,我如何同步读数,以便它最好进入此窗口的中间,以获得更大的误差范围。 还想象一下,如果我尝试每秒执行 10 次。窗口变得更小。

关于这个主题我能读到什么?我可以做些什么来让它更可靠?

一种可能的解决方案似乎是每秒读取 4 次输入并使用基于 2 个输入组的数据。

最佳答案

听起来您可能想阅读有关编码时间码的方法。 http://en.wikipedia.org/wiki/Timecode

其中每一个都以选定的帧速率(比如 30fps)传输 80 位数据。我不确定在你的情况下你会怎么做。

显然,窗口越小越准确。借助 LTC,由于音频通常以 44kHz 左右的频率采样,因此几乎可以精确定位音频。

如果 iPhone 相机每秒只能拍摄 2 张​​照片,我想知道您是否可以尝试以不同的间隔拍摄照片(比如,甚至 0.7 秒),然后通过某种方式计算出它应该打开还是关闭(因为 LED 仍以 0.5 秒交替闪烁)。在几秒钟的时间内,它可能与每 0.1 秒采样一次相同? (我只是从天而降,但我想你可以算出类似的东西)

另一个想法:您可以使用相机中的视频而不是一系列照片吗?你也许能够以这种方式获得 30fps? (我不确定——还没有研究过)iOS 6.0 中也可能对此进行了改进(如果您是开发人员,值得检查一下)。

关于objective-c - 如何将视频(图像)输入与外部源同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11664094/

相关文章:

objective-c - 计算文本容器的高度

ios - 嵌入式 Youtube 视频 - UIWebView 和 Safari 之间的区别

ios - 从 View Controller 访问界面构建器对象

ios - 在 UITableview 中删除不起作用

ios - 如何将 FBProfilePictureView 保存在 NSUserDefaults\Core Data 中?

objective-c - 如何将手势识别器添加到一系列 subview 中?

iOS UILocalNotification 设置为每天触发一次,每两天触发一次,并且仅在星期日触发

java - 除了使用运算符 '/' 之外,还有其他快速方法可以将 long 除以 1000000 吗?

performance - AngularJs 脏检查的性能成本是多少,包括移动设备上的电池?

performance - Boost.Variant 与虚拟接口(interface)性能