(目标C) 只是使用简单的AudioServicesPlaySystemSoundID及其对应物,但我在文档中找不到是否已经有办法找到音频文件的长度。
我知道有AudioServicesGetPropertyInfo,但这似乎返回一个字节缓冲区 - 音频文件是否嵌入了自己的长度,我可以用它来提取它?
或者是否有基于比特率* fileSize的公式可以转换为时间长度?
mIL3S
www.milkdrinkingcow.com
答案 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 ......