2012-09-14 89 views
0

我有一個音頻對象的表格視圖,每個都有一個url屬性。我正在尋找最快的方式(供用戶使用)來播放每個音頻文件。使用avaudioplayer加載和播放音頻,UITableView NSURL

我試圖從URL中第一個獲得數據:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSURL *audioURL = [NSURL URLWithString:(NSString *)[[[self.objects objectAtIndex:indexPath.row] objectForKey:@"audioFile"] url]]; 
    NSData *audioData = [NSData dataWithContentsOfURL:audioURL]; 
    NSError *error; 

    self.player = [[AVAudioPlayer alloc] initWithData:audioData error:&error]; 
    self.player.delegate = self; 
    [self.player play]; 
} 

但它的速度慢,反應遲鈍。我試圖直接尋找網址:

self.player = [[AVAudioplayer alloc] initWithContentsOfURL:audioURL] 

在這種情況下加載和播放音頻文件的最佳方式是什麼?異步提取數據? AVfoundation是流式音頻的最佳方式嗎?

http://developer.apple.com/library/ios/#documentation/MusicAudio/Reference/AudioStreamReference/Reference/reference.html#//apple_ref/doc/uid/TP40006162

我應該嘗試流呢?

回答

1

最快的方法是設置一個音頻服務這樣

CFBundleRef mainbundle = CFBundleGetMainBundle(); 
CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainbundle, CFSTR("soundhere"), CFSTR("extensionofsound"), NULL); 
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundFileObject); 

如果您在不使用AudioServices那麼你可以看看OpenAL的堅持(也有在Github包裝iOS設備)

相關問題