我使用AUGraph,它包含几台(例如10台)播放器、混频器和输出。如果我打开延迟在0,2秒左右的玩家--没关系,他们都在玩,但是如果我同时打开他们,只有3-4个玩家。
没问题,所有的玩家都在玩,但是延迟了:
for(int i=0; i<10; i++){
[players[i] play];
usleep(200000);
}不是很好,只有2-3个玩家在玩,但是同步地:
for(int i=0; i<10; i++){
[players[i] play];
}在[player play]方法中:
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中似乎有几个线程之间存在冲突,我无法控制。
有什么想法吗?
发布于 2017-11-01 08:46:57
在kAudioUnitProperty_ScheduledFilePrime解决问题之前添加kAudioUnitProperty_ScheduleStartTimeStamp设置。
UInt32 defaultVal = 0;
AudioUnitSetProperty(audioUnit,
kAudioUnitProperty_ScheduledFilePrime,
kAudioUnitScope_Global,
0,
&defaultVal,
sizeof(defaultVal));https://stackoverflow.com/questions/46929251
复制相似问题