0

I have a linear PCM file (.wav) in my app and I would like to get it's duration programatically. I could find the following using AudioStreamBasicDescription but could not make out how to get the duration in seconds.

mFormatID
mSampleRate
mChannelsPerFrame
mBytesPerPacket
mFramesPerPacket
mBytesPerFrame
mBitsPerChannel

Can someone please tell me how I can get the duration.

Thanks.

lostInTransit
  • 70,519
  • 61
  • 198
  • 274

2 Answers2

2

You can create an AVAudioPlayer instance with your file. AVAudioPlayer has duration property.

Morion
  • 10,495
  • 1
  • 24
  • 33
  • Hmm... You can use AudioFileGetProperty method and check value of kAudioFilePropertyEstimatedDuration property. – Morion Oct 30 '09 at 12:41
  • Agreed. For PCM, getting the kAudioFilePropertyEstimatedDuration should give you an accurate duration, since it's constant bit rate, and can therefore be calculated exactly from the ASBD and the number of samples. – invalidname Oct 30 '09 at 14:45
1

Using AudioFile kAudioFilePropertyEstimatedDuration property is best, however if you want the math for PCM: duration = totalNumPackets * ASBD.mFramesPerPacket / ASBD.mSampleRate

eddienull
  • 11
  • 2