Swift 需求 音乐播放暂停淡出淡放(声音逐渐消失)(视频)(源码)

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。

Swift-暂停音乐声音衰减源码

播放音乐出现咔声音的效果视频

前言

2022.10.8刚放完国庆回来就遇到一个烫手的Bug,目前是做古典音乐的app,对音乐的音质要求比较高,播放音乐的时候,如果在高音部分突然点击暂停按键。会听到轻微“咔”的声音。

可以听听下面的视频内容是否能听出来,下面所涉及到的视频需要在上面的(播放音乐出现咔声音的效果视频)中下载
在这里插入图片描述

当时使用的是 DOUAudioStreamer 第三方的SDK播放音乐的,所以想换成系统的AVPlayer试试有这种情况,发现没有
在这里插入图片描述

然后在appStore下载其他播放器也没有这个问题,目前出现这个问题只有两个可能,一个是我写代码造成的,感觉不太可能,因为音乐的暂停和开始SDK只提供就两个方法,我直接拿来使用的,

player?.pause()
player?.start()

最多就是定时的问题造成的,但是可能性不大,为了排除不是我代码的问题,所以我自己写了一个demol,用最简单的3行代码启动播放音乐,然后点击暂停和开始按键。发现一样有 “咔” 的声音。
在这里插入图片描述

那么就是最后一个问题,SDK本身的问题,按道理来说这个没得改的,因为方法是人家提供的,我只是用,它就是这么停止开始的,但是作为一款纯古典音乐的app对音质的要求这么高,听起来的感觉肯定让人不舒服的,所以还是要解决的。

产生这个问题的原因就是因为播放到高音的时候,如果突然点击暂停按键的时候,声音就会急速的停止产生的,别的播放器停止是很柔和。

所以我就想,停止音乐的时候先逐渐的调低音量,然后渐渐的淡化声音,知道听不到的时候在跳用停止的方法,相反重新播放音乐的时候也是一个道理的。

正题

GCD定时

我封装了一个GCD定时,每个一定的时间用来逐渐降低声音。
在这里插入图片描述
然后给DOUAudioStreamer做一个分类添加两个方法,一个是暂停的方法,一个是开始的方法,这样就不会影响第三方DOUAudioStreamer的内部封装。
在这里插入图片描述
最后就使用它,在点击按键的时候调用
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_38716347/article/details/127248334
今日推荐