在上一篇iOS音频播放之AudioQueue(一):播放本地音乐中,用AudioQueue实现了流式本地文件的播放,心情还是挺激动的,但是并没有获取时长和进度,也没有Seek操作,本节将实现这些功能
获取音频时长
获取音频的时长很简单,根据公式:
时长 = 音频数据长度 * 8 / 比特率
即可算出时长,老实说,我对音乐这一块也并不怎么了解,这个公式其实是百度到的,在上一节中,我们在使用AudioFileStream解析的时候,曾经获取到了音频数据长度和比特率,所以计算音频时长就很简单了,如下所示:
说句实话,本人对音频的了解是少之又少,如果这个公式不适用于一些音频文件的话,那本人也实在无能为力。
获取音频播放进度
AudioQueueGetCurrentTime
获取音频的进度也很容易,AudioQueue提供了一个方法用于获取从播放开始到现在的时长,它在AudioQueue.h中的原型声明如下所示:
extern OSStatus AudioQueueGetCurrentTime(AudioQueueRef inAQ, AudioQueueTimelineRef __nullable inTimeline,AudioTimeStamp * __nullable outTimeStamp, Boolean * __nullable outTimelineDiscontinuity);

本文介绍了如何使用AudioQueue在iOS中实现本地音乐播放的时长计算、进度获取和Seek操作。通过公式时长 = 音频数据长度 * 8 / 比特率计算时长,AudioQueueGetCurrentTime获取播放进度,以及两种方法进行Seek操作:手动计算偏移量和使用AudioFileStreamSeek。
最低0.47元/天 解锁文章
5290

被折叠的 条评论
为什么被折叠?



