我正在使用音频设备(iOS)播放文件中的音乐。如何获取正在播放的音乐的当前时间戳?
我发现在playbackCallback函数中有一个类型为AudioTimeStamp的变量调用“inTimeStamp”。这是我寻找当前时间戳的正确位置吗?
答案 0 :(得分:2)
你在这里:
AudioTimeStamp ts;
UInt32 size = sizeof(ts);
AudioUnitGetProperty(THIS->audioPlayerUnit,
kAudioUnitProperty_CurrentPlayTime,
kAudioUnitScope_Global,
0, &ts, &size);
NSLog(@"TS%f", ts.mSampleTime);
获得秒数的更好方法是添加
THIS->currentTime = ts.mSampleTime / THIS.streamFormatDescription.mSampleRate;
答案 1 :(得分:0)
loretoparisi的回答并不适合所有场景。如果您正在使用kAudioUnitSubType_AudioFilePlayer,请尝试他的答案;但如果您正在使用其他音频单元类型(如RemoteIO单元),则需要设置一个全局变量来存储音频单元渲染的帧数,并在每个渲染周期中更新该值。
player.progress += inNumberFrames/player.canonicalFormat.mSampleRate;