2013-04-20 88 views
0

我有一個UIButton一個UITableViewCell內迷上了一種方法來發揮AVAudio文件是這樣的:從SQLite的BLOB播放音頻與AVAudio記錄

cell.playButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
cell.playButton.tag = indexPath.row; 
[cell.playButton addTarget:self action:@selector(useSelectedFile:) forControlEvents:UIControlEventTouchUpInside]; 

和useSelectedFile方法是這樣的:

-(void) useSelectedFile:(id)sender{ 

    int tag = [(UIButton *)sender tag]; 
    NSDictionary *audioFileInformation = [audioCellsArray objectAtIndex:tag]; 
    NSData *selectedAudioFile = [audioFileInformation objectForKey:@"Data"]; 
    NSError *error; 

    NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"sound.caf"]; 
    [[NSFileManager defaultManager] removeItemAtPath:filePath error:nil]; 
    [selectedAudioFile writeToFile:filePath atomically:YES]; 
    NSURL *file = [NSURL fileURLWithPath:filePath]; 


    _audioPlayerForButton = [[AVAudioPlayer alloc] initWithContentsOfURL:file error:&error]; 
    if (error) 
     NSLog(@"Error: %@", 
       [error localizedDescription]); 
    else 
     [_audioPlayerForButton play]; 

} 

我可以錄製文件並將它們保存在數據庫中並將數據拉出,但是我無法播放它們。用我得到的當前代碼:錯誤:操作無法完成。 (OSStatus錯誤1954115647.)

,當我試圖只用:錯誤:操作無法完成

_audioPlayerForButton = [[AVAudioPlayer alloc] initWithData:selectedAudioFile error:&error]; 

擊中播放按鈕時,我會得到這個錯誤。 (OSStatus錯誤2003334207.)

檢查我從模擬器寫入磁盤的文件,它似乎是腐敗的可能?文件系統不會像正常的.caf文件(帶音樂筆記的黑色)那樣將其顯示爲音頻文件,而不會像QuickTime符號那樣顯示爲QuickTime不會播放的小白色文件。

我嘗試在命令行上使用macerror statuscode,但它只是返回「未知錯誤」。

任何人有任何想法或提示如何解決這個問題,讓我的文件播放?

回答

0

它從文件存儲爲BLOBTEXT事實證明我是對的,比較文件的更多,我可以清楚地看到數據是不同後,所以我改變,只是使用的base64類從這裏編碼它們:iPhone SDK base64 encode/decode