两个音频文件之间的交叉表 - swift



过去一周我一直在寻找解决方案,但仍未找到它。

我的目标是使用DidSelectItem加载到集合视图中的两个音频文件之间。问题在于让一个停下来,另一个人无点击或弹出就可以无缝地玩。

我尝试过的事情:

  1. github头足类库
  2. 多个avaudioplayers

如果有人可以将我指向正确的方向,我会很感激!

我会研究avmutableaudiomixinputparameters。特别是setVolumeramp(fromstartvolume:toendvolume:timerange:cmtimerange(。

当您淡入另一个曲目时,您可以淡入一个曲目的音量,这将导致两者之间的"无缝"过渡。

当您使用像此帖子的压缩音频格式时,我发现的点击或弹出也可能发生。.https://forums.macrumors.com/threads/avaudioplayer - 避免播放 - 播放循环的 - 640862/

这样做的原因是将压缩音频进行比较的方式进行未压缩的音频。可以说,例如,您有一个未压缩的声音文件为23600个样本,然后将文件保存为.caf使用AAC压缩的文件,为简单起见,以4:1的比率压缩。忽略文件标头,(再次(为了简单起见,文件中的数据存储在1024个样品。23600样品压缩 @ 4:1等于5900个样本,所以您可能希望您的文件看起来像这样;

块0:1024样品块1:1024样品块2:1024样品块3:1024样品块4:1024样品块5:780样品

您可以看到,因为声音文件的实际长度是不是1024个样本的确切倍数,最后一个块仅包含780个样品。因为不允许可变块长度(不在我知道的任何压缩格式,但我可能错了 - 当然是mp3/aac的trie(编码器必须通过沉默地填补末端。因此在实际的AAC文件中你会;

块0:1024样品块1:1024样品块2:1024样品块3:1024样品块4:1024样品块5:780样品 244个沉默样本/0

这对于非循环的声音很好,但是如果您的话,问题很明显尝试播放这种期望的无缝循环。您的声音文件应该第5900样品的循环,但因为这将在一个中间1024个样品块,直到244才真正发生循环样本后来,因此您在循环时会出现小停顿或故障点。

从.mp3切换到.wav解决了我在剪辑之间得到的点击和弹出。

最新更新