我正在使用音频单元(iOS)从文件中播放音乐。如何获取我正在播放的音乐的当前时间戳?
我发现在playbackCallback函数中有一个AudioTimeStamp类型的变量调用“inTimeStamp”。这是我寻找当前时间戳的正确位置吗?
我正在使用音频单元(iOS)从文件中播放音乐。如何获取我正在播放的音乐的当前时间戳?
我发现在playbackCallback函数中有一个AudioTimeStamp类型的变量调用“inTimeStamp”。这是我寻找当前时间戳的正确位置吗?
这个给你:
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;
loretoparisi 的答案并不适合所有场景。如果您使用的是 kAudioUnitSubType_AudioFilePlayer,请尝试他的回答;但如果您使用其他音频单元类型,例如 RemoteIO 单元,则需要设置一个全局变量来存储音频单元已渲染的帧数,并在每个渲染周期更新该值。
player.progress += inNumberFrames/player.canonicalFormat.mSampleRate;