2009-10-17 94 views
4

我正在使用AVAudioRecorder通過停止使用NSMutableData對象並使用appendData方法將該數據附加到以前的錄製文件的記錄,每隔15秒保存一個音頻文件。在NSData上將音頻文件合併爲一個iPhone

然後我再次以相同的方法記錄,以便記錄是「連續的」。問題是,只要你[錄音機停止],它就會按照指定的URL保存/關閉音頻文件。這很好,因爲我可以用它填充NSData對象並將其附加到我的NSMutableObject,然後寫入相同的文件url。

問題是一定是錯誤的標題信息,因爲它只播放音頻的第一部分。

我的問題是如何正確合併文件,即使像合併兩個音頻文件一樣簡單,並讓AVAudioPlayer將其視爲一個文件。當我將第二張錄音附加到第一張錄音時,我想到的可能是文件長度/持續時間的標題信息。

任何想法?

回答

1

音頻文件有一個標題,它指定文件中有多少個採樣以及數據塊應該存在多長時間。附加到現有文件的任何數據都將被忽略。這就是爲什麼你只能聽到第一個錄音。

您不能像添加原始數據一樣追加或連接音頻文件。您必須從每個文件中提取樣本數據塊,僅對數據進行連接,然後使用正確填寫的數據長度和樣本數字段以及最終連接的聲音數據塊本身編寫新文件頭。

1

iPhone音頻API允許您創建非常大/長的音頻文件,而無需執行任何過於複雜的操作。看到示例代碼SpeakHere,它會創建一個隨時間增長的聲音文件,可能會達到一些非常大的尺寸。

相關問題