I am in need of seeking around an audio file and pull out chunks. I am trying to use the AVAssetReader. The bug I am seeing is if I read the audio over a period of time from
It appears to me that you problem is with assuming the following code accurately seeks to startTime:
CMTimeRange timeRange = CMTimeRangeMake(startTime, kCMTimePositiveInfinity);
assetReader.timeRange = timeRange;
You can test this using a call to
CMSampleBufferGetOutputPresentationTimeStamp(nextBuffer);
From this you will be able to see the exact time (in seconds) of start of the buffer.
In my own experience seeking with
assetReader.timeRange = CMTimeRangeMake(CMTimeMake(sample, sample_rate), kCMTimePositiveInfinity)
works perfectly. There's no precision problem with the seeking.
What you may encounter is the fade-in issue : in fact AVAssetReader seems to fade in the first 1024 samples (maybe a little more). I fixed it by reading 1024 samples before the position I really want to read, then skip that 1024 samples.