IOS 获取音频时长

方式一:AVURLAsset

AVURLAsset*audioAsset = [AVURLAsset URLAssetWithURL:audioFileURL options:nil];`

CMTime audioDuration = audioAsset.duration;

float audioDurationSeconds = CMTimeGetSeconds(audioDuration);

方式二:AVAudioPlayer

//在使用过程中发现一个问题,安卓端传过来的音频文件的时长计算出来只有实际时长的三分之一,后发现安卓端的采样频率为8000,估计AVAudioPlayer在计算时是按照25600的频率进行计算的。将ios端的录音采样频率设置为16000后,发现时长只有只有真实时长的1.6分之1 。所以估计是采样频率的原因导致的时长计算不对。

AVAudioPlayer* player = [[AVAudioPlayer alloc] initWithData:data error:nil];

double duration = player.duration;

AVAudioFormat* format = player.format;

NSLog(@"音频时长:%lf",player.duration);

NSLog(@"音频声道数:%u",format.channelCount);

NSSLog(@"采样频率==%lf",format.sampleRate);////默认为:25600,所以也是按照这个频率来计算的

duration = duration*(25600/format.sampleRate);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容