将多个音频文件作为一个顺序播放
Play multiple audio files in sequence as one
我正在尝试实现一个音频播放器来播放多个文件,就好像它们是一个文件一样。但是,初始缓冲时间应该只是第一部分的时长,其他文件应该依次加载。
例如:
- 文件 1:
- 第 1 部分 - 0:35s
- 第 2 部分 - 0:47s
- 第 3 部分 - 0:07s
File1 应该像 1:29 一样播放,但我们(最多)只能等到 Part1 加载完毕才能开始播放。
我看过AVAsset,但似乎并没有解决问题。我还考虑过使用 AVAudioPlayer 实现它并自己完成所有逻辑。
以前有人遇到过这个问题吗?
谢谢!
您可以使用 AVQueuePlayer 来实现这一点。您需要使用文件 url 创建 AVPlayerItem
,然后需要使用它的 queuePlayerWithItems:
方法初始化 AVQueuePlayer
。
AVPlayerItem *firstItem = [[AVPlayerItem alloc] initWithURL:firstPartURL];
AVPlayerItem *secondItem = [[AVPlayerItem alloc] initWithURL:secondPartURL];
AVPlayerItem *thirdItem = [[AVPlayerItem alloc] initWithURL:thirdPartURL];
NSArray *itemsToPlay = [NSArray arrayWithObjects:firstItem, secondItem, thirdItem, nil];
AVQueuePlayer *qPlayer = [AVQueuePlayer queuePlayerWithItems:itemsToPlay];
[qPlayer play];
我正在尝试实现一个音频播放器来播放多个文件,就好像它们是一个文件一样。但是,初始缓冲时间应该只是第一部分的时长,其他文件应该依次加载。
例如:
- 文件 1:
- 第 1 部分 - 0:35s
- 第 2 部分 - 0:47s
- 第 3 部分 - 0:07s
File1 应该像 1:29 一样播放,但我们(最多)只能等到 Part1 加载完毕才能开始播放。
我看过AVAsset,但似乎并没有解决问题。我还考虑过使用 AVAudioPlayer 实现它并自己完成所有逻辑。
以前有人遇到过这个问题吗?
谢谢!
您可以使用 AVQueuePlayer 来实现这一点。您需要使用文件 url 创建 AVPlayerItem
,然后需要使用它的 queuePlayerWithItems:
方法初始化 AVQueuePlayer
。
AVPlayerItem *firstItem = [[AVPlayerItem alloc] initWithURL:firstPartURL];
AVPlayerItem *secondItem = [[AVPlayerItem alloc] initWithURL:secondPartURL];
AVPlayerItem *thirdItem = [[AVPlayerItem alloc] initWithURL:thirdPartURL];
NSArray *itemsToPlay = [NSArray arrayWithObjects:firstItem, secondItem, thirdItem, nil];
AVQueuePlayer *qPlayer = [AVQueuePlayer queuePlayerWithItems:itemsToPlay];
[qPlayer play];