2011-09-19 102 views
3
發揮新的媒體類型

我有一個非常不標準AVFoundation的問題,作爲一個相對的新手到iOS的世界,我真的可以使用從專家那裏一些指導 -捕捉和AVFoundation

我工作在一個應用程序,讓用戶記錄的音頻位,我需要編程使用AVMutableComposition安排。除了我想要捕獲和保存加速度計數據並使其與聲音同步的音軌之外,還有一件事情。通常,AVFoundation用於靜態照片,音頻和視頻等已知媒體類型,但我想知道使用此框架捕獲加速度計數據等是否可行。這將使我更容易將傳感器數據與捕獲的音頻同步,尤其是在將零件與AVMutableComposition放在一起時。

以下是我需要完成:

  1. 記錄加速度數據作爲AVAsset/AVAssetTrack這樣我就可以將其插入AVMutableComposition

  2. 自定義視圖允許加速度計數據的回放旁邊音頻它記錄了與

  3. 保存AVMutableComposition到磁盤,包括音頻和加速軌道。這將是很好使用標準的容器如Quicktime

對於部分1 & 3我看着使用AVAssetReaderAVAssetReaderOutputAVAssetWriterAVAssetWriterInput類從加速度計,但沒有與可可我」太多的經驗來捕捉我試圖找出我需要擴展的東西。在這一點上,我想我需要繼承AVAssetReaderOutputAVAssetWriterInput,並與CMSampleBuffers一起工作,以允許原始加速計數據和AVAsset之間的轉換。我觀察到大多數類只有一個私有成員引用的具體實現(即AVAssetReaderInternalAVAssetWriterInputInternal)。有誰知道這是一種常見的模式還是它對於編寫自定義實現意味着什麼?

我還沒定部分2太多的思考。我目前使用的AVPlayer播放音頻,但我不知道如何把它從資產樣本數據分發到我的自定義加速度計視圖。

道歉這樣一個開放式的問題 - 我想我正在尋找更比一個具體的解決方案的指導。對於AVFoundations架構是否完全有可能存在任何直覺?

+0

通過回放加速度計數據,你是什麼意思......你將如何顯示數據? – Daniel

+0

我將有一個自定義UIView,它將基於加速度計播放呈現某些內容。我想將音頻和加速計軌道作爲AVPlayerItem切換到AVPlayer,但我不確定AVPlayer '代表播放或發佈實際樣本。我想過用'addPeriodicTimeObserverForInterval:..'註冊播放通知,然後只是渲染內容,但我不確定現在蘋果是否用'AVPlayerLayer'來做。或者是? – weston

回答

0

我會用一個的NSMutableArray和存儲加速器的數據加上時間碼出現。因此,當您播放時,您可以從視頻播放器獲取時間並使用該時間查看陣列中的加速器數據。由於數據存儲爲時間線,因此不必搜索整個數組。在陣列中前進足夠,並檢查時間數據是否一致。

+0

我真的很想利用AVFoundation的組合功能,並最終編寫一個Quicktime文件,同時交錯音頻和加速度計數據。 – weston