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

Mil*_*den 5 iphone audio objective-c core-audio

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

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

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

mIL3S

www.milkdrinkingcow.com

Pof*_*off 16

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

length-of-time (duration in seconds) = fileSize (in bytes) / bit-rate (bits/secs)*8
Run Code Online (Sandbox Code Playgroud)

您使用System Sound Services播放声音有什么特别的原因吗?

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

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


Naz*_*zir 11

来自答案的示例代码如何在iOS中获取音频文件的持续时间?.这是最好的答案.

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