0

我正在使用音频单元(iOS)从文件中播放音乐。如何获取我正在播放的音乐的当前时间戳?

我发现在playbackCallback函数中有一个AudioTimeStamp类型的变量调用“inTimeStamp”。这是我寻找当前时间戳的正确位置吗?

4

2 回答 2

4

这个给你:

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;
于 2013-09-10T13:40:03.937 回答
0

loretoparisi 的答案并不适合所有场景。如果您使用的是 kAudioUnitSubType_AudioFilePlayer,请尝试他的回答;但如果您使用其他音频单元类型,例如 RemoteIO 单元,则需要设置一个全局变量来存储音频单元已渲染的帧数,并在每个渲染周期更新该值。

player.progress += inNumberFrames/player.canonicalFormat.mSampleRate;
于 2016-02-02T02:55:52.603 回答