2012-05-20 80 views
0

我記錄然後一些文件,播放:SimpleAudioEngine始終發揮相同的效果?

NSArray *dirPaths; 
    NSString *docsDir; 
    dirPaths = NSSearchPathForDirectoriesInDomains(
                NSDocumentDirectory, NSUserDomainMask, YES); 
    docsDir = [dirPaths objectAtIndex:0]; 
    NSString *soundFilePath = [docsDir 
           stringByAppendingPathComponent:@"temp0.caf"]; 

//play 
[[SimpleAudioEngine sharedEngine] preloadEffect:soundFilePath]; 
    [[SimpleAudioEngine sharedEngine] playEffect:soundFilePath pitch:1.5f pan:0.0f gain:0.3f]; 

它工作在第一時間,但第二次再次播放同一文件,甚至我已經記錄了一些其他的文件。

有幫助嗎?

+1

您確定新記錄也被稱爲'temp0.caf'嗎?當你想播放一個文件時,你運行所有這些代碼?我沒有使用此引擎的經驗,但是也許您應該在再次預加載之前卸載效果? – DanSkeel

+0

我真的不明白你想問什麼,你說: 「甚至我已經記錄了一些其他文件」 那麼我們可以請看看代碼... – MCKapur

+0

我正在使用簡單的avaudioRecorder錄製文件,那裏沒有什麼特別的。是的,它被記錄到相同的文件路徑。如果我用CDSoundEngine播放它,它確實會改變重新編碼。 – user1280535

回答

1

也許你的音頻引擎預裝的是效果,並保持預載,請嘗試:

[[SimpleAudioEngine sharedEngine] preloadEffect:nil]; 
[[SimpleAudioEngine sharedEngine] preloadEffect:soundFilePath]; 

    [[SimpleAudioEngine sharedEngine] playEffect:soundFilePath pitch:1.5f pan:0.0f gain:0.3f]; 

而且,在何時何地被稱爲代碼。它的名字是在你的記錄之後調用的?也許嘗試:

NSArray *dirPaths = nil; 
    NSString *docsDir = nil; 

在頂部。嘗試這個,如果它不起作用我需要看你的錄音代碼

+0

已經試過,謝謝。這是行不通的。即使沒有預載它不是。仍然一遍又一遍播放相同的音頻。如果我用CDSoundEngine播放音頻,它的工作效果很好。 – user1280535

+0

明白了:[[SimpleAudioEngine sharedEngine] unloadEffect:soundFilePath]; – user1280535

+0

對啊.... – MCKapur

0

我認爲正在發生的是你的音頻文件拒絕被新的覆蓋。也許你應該在每次用戶記錄文件時嘗試更改文件的名稱。所以,當他的記錄,您將文件保存爲一個字符串,格式爲:

[NSMutableString stringWithFormat:@"temp%d.caf",number]; 

然後每當用戶希望記錄,您可以通過一個加大「數字」。

number = number +1;