首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AUGraph中几个播放器的同步播放

AUGraph中几个播放器的同步播放
EN

Stack Overflow用户
提问于 2017-10-25 09:51:33
回答 1查看 80关注 0票数 0

我使用AUGraph,它包含几台(例如10台)播放器、混频器和输出。如果我打开延迟在0,2秒左右的玩家--没关系,他们都在玩,但是如果我同时打开他们,只有3-4个玩家。

没问题,所有的玩家都在玩,但是延迟了:

代码语言:javascript
复制
    for(int i=0; i<10; i++){
       [players[i] play];
       usleep(200000);
    }

不是很好,只有2-3个玩家在玩,但是同步地:

代码语言:javascript
复制
    for(int i=0; i<10; i++){
       [players[i] play];
    }

[player play]方法中:

代码语言:javascript
复制
   AudioTimeStamp startTime;
   memset (&startTime, 0, sizeof(startTime));
   startTime.mFlags = kAudioTimeStampSampleTimeValid;
   startTime.mSampleTime = -1;

   AudioUnitSetProperty(audioUnit, 
      kAudioUnitProperty_ScheduleStartTimeStamp, 
      kAudioUnitScope_Global, 
      0, 
      &startTime, 
      sizeof(startTime));

AudioUnitSetProperty返回noErr。

AudioUnitSetProperty中似乎有几个线程之间存在冲突,我无法控制。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-01 08:46:57

在kAudioUnitProperty_ScheduledFilePrime解决问题之前添加kAudioUnitProperty_ScheduleStartTimeStamp设置。

代码语言:javascript
复制
    UInt32 defaultVal = 0;
    AudioUnitSetProperty(audioUnit,
                         kAudioUnitProperty_ScheduledFilePrime,
                         kAudioUnitScope_Global,
                         0,
                         &defaultVal,
                         sizeof(defaultVal));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46929251

复制
相关文章

相似问题

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