2011-09-10 129 views

回答

7

在波數據樣本中是交錯的。這意味着數據是這樣組織的。由於每個採樣是16位(2字節),所以前2個通道採樣(即,對於左和右)是4個字節大小。

你知道,在波數據塊的最後一個樣本是如下這樣:

wavDataSize - 4 

然後,您可以在同一時間通過複製到不同的緩衝區由從末端開始加載每個樣品的錄音和倒退。當您到達波形數據的起點時,您已經顛倒了波形數據,並且將會顛倒播放。

編輯:如果您想在iOS上輕鬆閱讀wave文件,請查看Audio File Services Reference

編輯2:

readPoint = waveDataSize; 
writePoint = 0; 
while(readPoint > 0) 
{ 
    readPoint -= 4; 
    Uint32 bytesToRead = 4; 
    Uint32 sample; 
    AudioFileReadBytes(inFile, false, maxData, &bytesToRead &sample); 
    AudioFileWriteBytes(outFile, false, writePoint, &bytesToRead, &sample); 

    writePoint += 4; 
} 
+0

的難點在於它是否具有標題和塊的wav文件格式。 – zaph

+0

@CocoaFu:不是。 Apple爲您提供了一大堆處理波形文件的函數。這種格式並不是你自己很難完成的。 – Goz

+0

@Goz謝謝,如果問得不是太麻煩,你能提供一個代碼樣本來幫助我理解嗎?這將如何實現代碼明智? – DaveSmith122

0

假定一個單塊的WAV文件,嘗試memmapping該文件,並以相反的順序出複製的樣品中,從文件的末端開始,到音頻隊列或RemoteIO緩衝器,在回調期間,使用其中一種API播放音頻。在到達WAV/RIFF頭部之前停止複製(通常是第44個字節)。

0

要反轉音頻,爲什麼不使用MPMediaPlayback的currentPlaybackRate(https://developer.apple.com/library/ios/#DOCUMENTATION/MediaPlayer/Reference/MPMediaPlayback_protocol/Reference/Reference.html)

相關問題