我通过在我的应用程序中缓冲来播放歌曲。
我想播放另一首歌曲(通过单击按钮)。
但它会同时播放两首歌曲。即使我试图阻止它,它也不会停止第一首歌。
我提到了 matt gallagher tutorial这是我的代码:
[streamer stop];
- (void)stop
{
@synchronized(self)
{
if (state == AS_WAITING_FOR_DATA || state == AS_STARTING_FILE_THREAD)
return;
if (audioQueue &&
(state == AS_PLAYING || state == AS_PAUSED ||
state == AS_BUFFERING || state == AS_WAITING_FOR_QUEUE_TO_START))
{
self.state = AS_STOPPING;
stopReason = AS_STOPPING_USER_ACTION;
err = AudioQueueStop(audioQueue, true);
if (err)
{
[self failWithErrorCode:AS_AUDIO_QUEUE_STOP_FAILED];
return;
}
}
else if (state != AS_INITIALIZED)
{
self.state = AS_STOPPED;
stopReason = AS_STOPPING_USER_ACTION;
}
seekWasRequested = NO;
}
while (state != AS_INITIALIZED)
{
[NSThread sleepForTimeInterval:0.1];
}
}
这个streamer
调用缓冲的stop方法。
可能是什么问题?
最佳答案
我已经为您制作了一个功能,可以在您开始新流时杀死旧播放器:
- (void)playURL:(NSURL*)url {
if (streamer == nil) {
streamer = [[AudioStreamer alloc] initWithURL:url];
return;
}
if ([streamer isPlaying]) {
[streamer stop];
[streamer release];
}
streamer = [[AudioStreamer alloc] initWithURL:url];
}
将它安装在您的 View Controller 中并使用它代替原始的 [[AudioStreamer alloc] initWithURL:url]
关于iPhone:在我们开始下一首歌曲之前,第一首歌曲不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6728644/