2009-10-30 112 views
0

我在我的应用程序中有一个线性PCM文件(.wav),我希望以编程方式获取它的持续时间。我可以使用AudioStreamBasicDescription找到以下内容,但无法确定如何在几秒钟内获得持续时间。iPhone - 获得线性PCM音频文件的持续时间

mFormatID 
mSampleRate 
mChannelsPerFrame 
mBytesPerPacket 
mFramesPerPacket 
mBytesPerFrame 
mBitsPerChannel 

有人可以告诉我如何获得持续时间。

谢谢。

回答

2

你可以用你的文件创建一个AVAudioPlayer实例。 AVAudioPlayer具有持续时间属性。

+0

什么都没有? – lostInTransit 2009-10-30 12:30:42

+0

嗯...你可以使用AudioFileGetProperty方法并检查kAudioFilePropertyEstimatedDuration属性的值。 – Morion 2009-10-30 12:41:35

+0

同意。对于PCM,获取kAudioFilePropertyEstimatedDuration应该给你一个精确的持续时间,因为它是恒定的比特率,因此可以从ASBD和采样数量准确计算出来。 – invalidname 2009-10-30 14:45:52

1

使用的AudioFile kAudioFilePropertyEstimatedDuration属性是最好的,但是如果你想为PCM数学:持续时间= totalNumPackets * ASBD.mFramesPerPacket/ASBD.mSampleRate使用音频流