Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Context
While working with aac audio files I noticed the returned duration was often incorrect, shorter than the actual playtime of the audio file. This issue has also been described in #228. The included changes fix the problem for me, with the disclaimer that I have only tested this with local aac files.
The problem
The cause of the issue seems to be that the
AVAudioPlayer
is only taking a rough estimate of the total file duration. This may be even more off target when working with remote files that might not have completed loading when playing starts.The proposed solution
I propose to also load the file in
AVURLAsset
, which allows for an option (AVURLAssetPreferPreciseDurationAndTimingKey
) to be specified. This way we can force iOS to load the whole audio file, asynchronously request theduration
property and only then continue initialisation.Caveats