首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AudioSteamer的状态有时不会更改为AS_PLAYING

AudioSteamer的状态有时不会更改为AS_PLAYING
EN

Stack Overflow用户
提问于 2013-09-04 17:54:34
回答 1查看 193关注 0票数 4

我使用Matt Gallagher的AudioSteamer实现了在线音乐播放功能,我发现有时在线音乐正在播放,但audiostreamer的状态不会变成AS_PLAYING,有人遇到过同样的问题吗?你能告诉我怎么解决这个问题吗~~谢谢~

我猜其中一个原因是:

代码语言:javascript
运行
复制
if (![[NSThread currentThread] isEqual:internalThread])
{
        [self
        performSelector:@selector(handlePropertyChange:)
        onThread:internalThread
        withObject:[NSNumber numberWithInt:inID]
        waitUntilDone:NO
        modes:[NSArray arrayWithObject:NSDefaultRunLoopMode]];
    return;
}

在执行完这些代码之后

代码语言:javascript
运行
复制
- (void)handlePropertyChangeForQueue:(AudioQueueRef)inAQ
    propertyID:(AudioQueuePropertyID)inID

函数:

代码语言:javascript
运行
复制
- (void)handlePropertyChange:(NSNumber *)num
{
    [self handlePropertyChangeForQueue:NULL propertyID:[num intValue]];
}

不执行..。我真的不知道如何修复它...anybody帮助我?谢谢..

EN

回答 1

Stack Overflow用户

发布于 2013-10-22 22:58:51

我也有这个问题。我添加了以下代码:

代码语言:javascript
运行
复制
if (state == AS_WAITING_FOR_QUEUE_TO_START){
        @synchronized(self){
            self.state = AS_PLAYING;
        }
    }

进入该方法:

代码语言:javascript
运行
复制
- (void)handlePropertyChangeForQueue:(AudioQueueRef)inAQ
propertyID:(AudioQueuePropertyID)inID

就在此调用之前:

代码语言:javascript
运行
复制
[self
    performSelector:@selector(handlePropertyChange:)
    onThread:internalThread
    withObject:[NSNumber numberWithInt:inID]
    waitUntilDone:NO
    modes:[NSArray arrayWithObject:NSDefaultRunLoopMode]];
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18610705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档