如何在AudioQueue中查看当前时间和持续时间

Cha*_* SP 5 audio cocoa core-audio audioqueueservices

如何在audioQueue中获取音乐的总持续时间.我在用

NSTimeInterval AQPlayer::getCurrentTime()
{
    NSTimeInterval timeInterval = 0.0;

    AudioQueueTimelineRef timeLine;
    OSStatus status = AudioQueueCreateTimeline(mQueue, &timeLine);
    if(status == noErr)
    {
        AudioTimeStamp timeStamp;
        AudioQueueGetCurrentTime(mQueue, timeLine, &timeStamp, NULL);
        timeInterval = timeStamp.mSampleTime;
    }

    return timeInterval;
}
Run Code Online (Sandbox Code Playgroud)

AudioQueueGetCurrentTime(mQueue,timeLine,&timeStamp,NULL); 为了获得当前的播放时间,它给出了一些有价值的大值以及如何获得音乐文件的持续时间.

Tho*_*sRS 8

为了将来参考,我使用Chandan代码的略微修改在几秒钟内获得正确的时间:

int AQPlayer::GetCurrentTime() {
    int timeInterval = 0;
    AudioQueueTimelineRef timeLine;
    OSStatus status = AudioQueueCreateTimeline(mQueue, &timeLine);
    if(status == noErr) {
        AudioTimeStamp timeStamp;
        AudioQueueGetCurrentTime(mQueue, timeLine, &timeStamp, NULL);
        timeInterval = timeStamp.mSampleTime / mDataFormat.mSampleRate; // modified
    }
    return timeInterval;
}
Run Code Online (Sandbox Code Playgroud)