我有一个非常不标准的AVFoundation问题,作为一个相对于iOS世界的新手,我真的需要一些专家的指导-
我正在开发一个应用程序,可以让用户记录我需要用AVMutableComposition编程安排的音频片段。事情是这样的,除了音频轨道,我想捕获和保存加速度计数据,并让它与声音同步。通常,AVFoundation用于已知的媒体类型,如静止照片、音频和视频,但我想知道使用此框架捕获诸如加速度计数据是否可行。这将使我更容易将传感器数据与捕获的音频同步,特别是当将部分与AVMutableComposition放在一起时。
以下是我需要完成的任务:
AVAsset/AVAssetTrack,这样我就可以将它插入AVMutableComposition AVMutableComposition到磁盘,包括音频和加速度计磁道。最好使用像Quicktime 这样的标准容器
对于第1和第3部分,我将使用AVAssetReader、AVAssetReaderOutput、AVAssetWriter、AVAssetWriterInput类从加速度计中捕获,但没有多少Cocoa方面的经验,我正在努力弄清楚我需要扩展什么。此时,我想我需要子类AVAssetReaderOutput和AVAssetWriterInput,并使用CMSampleBuffers来允许原始加速度计数据和AVAsset之间的转换。我注意到,这些类中的大多数只有一个私有成员引用具体的实现(即AVAssetReaderInternal或AVAssetWriterInputInternal)。是否有人知道这是一种常见的模式,还是它对于编写自定义实现意味着什么?
我还没有仔细考虑过第2部分。我目前正在使用一个AVPlayer来播放音频,但我不知道如何将它从资产中分发给我的自定义加速度计视图。
为这样一个开放的问题道歉-我想我更多的是寻求指导,而不是一个具体的解决方案。对于AVFoundations体系结构是否可能发生这种情况,有任何直觉吗?
发布于 2011-09-21 11:15:12
我将使用NSmutableArray并将加速器数据和时间代码存储在那里。所以当你回放的时候,你可以从视频播放器中得到时间,并使用它来查找数组中的加速器数据。由于数据是作为时间线存储的,所以不必搜索整个数组。只要在数组中向前一步,检查时间数据是否一致就足够了。
https://stackoverflow.com/questions/7476926
复制相似问题