2015-02-13 18 views
5

Tôi đang cố gắng triển khai Trình phát âm thanh để phát nhiều tệp như thể chúng là một tệp duy nhất. Tuy nhiên, thời gian đệm ban đầu chỉ nên là thời gian của phần đầu tiên và các tệp khác sẽ được tải theo thứ tự.Phát nhiều tệp âm thanh theo trình tự như một

Ví dụ:

  • File1:
    • Phần 1 - 0: 35s
    • Part2 - 0: 47s
    • Part3 - 0: 07s

Các File1 nên được chơi như thể nó đã có 1:29, nhưng chúng tôi sẽ chỉ chờ đợi (nhiều nhất) cho đến khi Part1 được tải để bắt đầu chơi.

Tôi đã xem AVAsset nhưng dường như không giải quyết được vấn đề. Tôi cũng nghĩ đến việc thực hiện nó bằng cách sử dụng AVAudioPlayer và tự làm tất cả logic.

Có ai có vấn đề này trước đây không?

Cảm ơn!

Trả lời

3

Bạn có thể sử dụng AVQueuePlayer để đạt được điều này. Bạn cần tạo AVPlayerItem bằng url của tệp và sau đó cần khởi tạo AVQueuePlayer bằng phương pháp queuePlayerWithItems:.

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]; 
+0

có vẻ đầy hứa hẹn! – Victor

+0

nó giải quyết được vấn đề, tôi chỉ cần thêm một người quan sát vì vậy sau đó tôi có thể nhận được khi người chơi đã sẵn sàng '[qPlayer addObserver: self forKeyPath: @" status "options: 0 context: nil];' – lucoceano

Các vấn đề liên quan