iOS音频单元获取当前时间戳

时间:2013-01-25 02:14:49

标签: ios timestamp audio-streaming

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

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

2 个答案:

答案 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;