いくつかのオーディオを連続して再生する必要があるためAVQueuePlayer
、その目的で使用します。オーディオを次のようにロードしています:
for (NSInteger i = row ; i<_messagesArray.count ; i++)
{
_urlString = ((PFFile*)(_messagesArray[i][@"messageFile"])).url;
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:[NSURL URLWithString:_urlString] options:nil];
NSArray *keys = @[@"playable"];
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:asset];
// Subscribe to the AVPlayerItem's DidPlayToEndTime notification.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(itemDidFinishPlaying:) name:AVPlayerItemDidPlayToEndTimeNotification object:item];
if (_queuePlayer == nil)
{
_queuePlayer = [[AVQueuePlayer alloc] initWithPlayerItem:item];
}
else
{ /*This loads Async*/
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^() {
[_queuePlayer insertItem:item afterItem:nil];
}];
}
}
[_queuePlayer play];
Async
ここでの問題は、 (上記のコードの条件を参照)経由で URL からアセットをロードしてelse
いるため、私のオーディオ ファイルの順序がAVQueuePlayer
、_messagesArray
例:
_messagesArray = audioURL1 , audioURL2, audioURL3
AVQueuePlayer
次に、非同期のため、最初にロードされた方が最初に読み込まれます
AVQueuePlayer = audio2 (from URL2) , audio1 (from URL1) , audio3 (from URL3)
プレーヤーで順序を維持するための解決策を提案してください。
ありがとう。