0

それぞれがurlプロパティを持つオーディオオブジェクトのテーブルビューがあります。タッチで各オーディオファイルを再生するための(ユーザーにとっての)最速の方法を探しています。

最初に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];
}

しかし、それは遅く、無反応です。私はURLをまっすぐに行こうとしました:

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

ストリーミングしてみるべきですか?

4

1 に答える 1

2

最速の方法は、オーディオサービスをそのように設定することです

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

AudioServicesを使用しないことに固執している場合は、OpenALを確認できます(Github for iOSにはラッパーがあります)

于 2012-09-14T01:14:12.570 に答える