0

いくつかのオーディオを連続して再生する必要があるため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)

プレーヤーで順序を維持するための解決策を提案してください。

ありがとう。

4

2 に答える 2