如何查找音频文件的长度(以秒为单位)

时间:2011-01-07 20:51:37

标签: iphone objective-c audio core-audio

(目标C) 只是使用简单的AudioServicesPlaySystemSoundID及其对应物,但我在文档中找不到是否已经有办法找到音频文件的长度。

我知道有AudioServicesGetPropertyInfo,但这似乎返回一个字节缓冲区 - 音频文件是否嵌入了自己的长度,我可以用它来提取它?

或者是否有基于比特率* fileSize的公式可以转换为时间长度?

mIL3S

www.milkdrinkingcow.com

3 个答案:

答案 0 :(得分:15)

根据谷歌的快速搜索,有一个公式:

length-of-time (duration in seconds) = fileSize (in bytes) / bit-rate (bits/secs)*8

您使用系统声音服务播放声音有什么特别的原因吗?

如果您使用AVAudioPlayer处理您的声音,您可以执行以下操作:

AVAudioPlayer * sound = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];
sound.delegate = self;
sound.volume = 1;
NSLog([NSString stringWithFormat:@"%f", sound.duration]);

答案 1 :(得分:11)

回答How to get the duration of an audio file in iOS?的示例代码。这是最好的答案。

AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:audioFileURL options:nil];
CMTime audioDuration = audioAsset.duration;
float audioDurationSeconds = CMTimeGetSeconds(audioDuration);

答案 2 :(得分:0)

见:

Float64 fileDuration = PrepareFileAU (fileAU, fileFormat, audioFile);

参见ADC示例: http://developer.apple.com/library/mac/#samplecode/PlayFile/Introduction/Intro.html

不使用AVPlayer ......