在iOS上无缝转换,可以连续播放两个音频文件

时间:2011-09-21 06:06:44

标签: avfoundation audiotoolbox

我需要一个接一个地播放我的应用包(本地存储)中的音频文件,并在它们之间进行无缝转换。

使用AVComposition对我来说不好,因为我在第一个音频文件开始播放后才知道第二个音频文件名,所以我不能在手边将它们附加在一起。

我尝试使用两个AVAudioPlayers并在第一个结束时启动第二个AVAudioPlayers,但转换不是100%准确,所以我听到两者之间的(非常)小的沉默。

我在想,唯一的方法是将音频分解为字节并将其作为流播放,但我仍然坚持这一点(考虑到这是方向)。

有什么想法吗?

谢谢,

1 个答案:

答案 0 :(得分:0)

您可以尝试AVQueuePlayer

如果您知道第一个音频文件名称在第一个音频文件开始播放后,请使用

获取第二个音频的资源
  

AVURLAsset * asset = [AVURLAsset URLAssetWithURL:fileURL options:nil];

然后使用

加载资产
  

[asset loadValuesAsynchronouslyForKeys:[NSArray   arrayWithObject:tracksKey] completionHandler:

加载完成后,使用

将新项目添加到播放器队列
  

[queuePlayer insertItem:anItem afterItem:nil];

当第一个音频完成播放时,播放器将继续播放第二个音频。我没试过,但我猜不会停顿。