AVAudioRecorder currentTime different than AVPlayer.duration

I have a small audio app that records audio and then the user can play back. I am having an issue trying to display elapsed and total times. When I record the file, I use the audiorecorder.currentTime to get the recording length but when I load it in AVPlayer, it shows a different length. It is usually around 200ms off but not always.
When comparing the raw files. the AVPlayer does seem to report the correct time (length).
I am using a timer when recording that fires every 100ms since I don't think AVAudioRecorder has an observer like the AVPlayer, that updates the recording time using the audiorecorder.currentTime. I've checked out a number of things online and all of the example code I've found seems to have the same issue with the recorded time and player duration not being the same (The examples I have show the recorded time but never show the playback length but I manually loaded the file to check the playback length and it was always longer than the recorded display length) but there has to be a way to do this properly? Hopefully someone has some ideas or can tell me of a way they worked around this. I am recording using the following settings;

        let settings = [
            AVFormatIDKey: Int(kAudioFormatMPEG4AAC),
            AVSampleRateKey: 16000,
            AVNumberOfChannelsKey: 1,
            AVEncoderAudioQualityKey: AVAudioQuality.high.rawValue
        ]
AVAudioRecorder currentTime different than AVPlayer.duration
 
 
Q