使用缓冲如何在ios中播放音频播放器

时间:2014-04-02 08:49:21

标签: ios iphone objective-c xcode

我正在使用AVAudioplayer开发Audioplayer。我正在完成audioplayer功能。如果我点击播放按钮,歌曲将播放。但我有一些问题。如果我点击播放按钮,歌曲将需要1到2分钟的时间来启动歌曲。我正在使用json解析器。我是使用IO Buffer.But仍然有同样的问题喜欢玩。这是我的代码。请帮助我任何人。如果用户点击播放按钮,如何立即播放歌曲。提前谢谢。

-(void)playOrPauseButtonPressed:(id)sender

{

if(playing==NO)

{

[playButton setBackgroundImage:[UIImage imageNamed:@"Pause.png"] forState:UIControlStateNormal];

// Here Pause.png is a image showing Pause Button.

NSError *err=nil;

AVAudioSession *audioSession=[AVAudioSession sharedInstance];

[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

NSLog(@"%@ %d",urlsArray,selectedIndex);

NSString *sourcePath=[urlsArray objectAtIndex:selectedIndex];

NSData *objectData=[NSData dataWithContentsOfURL:[NSURL URLWithString:sourcePath]];

audioPlayer = [[AVAudioPlayer alloc] initWithData:objectData error:&err];

if(err)

{

NSLog(@"Error %ld,%@",(long)err.code,err.localizedDescription);

}

NSTimeInterval bufferDuration=0.005;

[audioSession setPreferredIOBufferDuration:bufferDuration error:&err];

if(err)

{

NSLog(@"Error %ld, %@", (long)err.code, err.localizedDescription);

}

double sampleRate = 44100.0;

[audioSession setPreferredSampleRate:sampleRate error:&err];

if(err)

{

NSLog(@"Error %ld, %@",(long)err.code,err.localizedDescription);

}

[audioSession setActive:YES error:&err];

if(err)

{

NSLog(@"Error %ld,%@", (long)err.code, err.localizedDescription);

}

sampRate=audioSession.sampleRate;

bufferDuration=audioSession.IOBufferDuration;

NSLog(@"SampeRate:%0.0fHZI/OBufferDuration:%f",sampleRate,bufferDuration);

audioPlayer.numberOfLoops = 0;

[audioPlayer prepareToPlay];

audioPlayer.delegate=self;

if(!audioPlayer.playing)

{

[audioPlayer play];

}

playing=YES;

}

else if (playing==YES)

{

[playButton setBackgroundImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];

[audioPlayer pause];

playing=NO;

}

if (self.audioPlayer)

{

[self updateViewForPlayerInfo];

[self updateViewForPlayerState];

[self.audioPlayer setDelegate:self];

}

}

0 个答案:

没有答案