【问题标题】:iOS - Can't use AVQueuePlayer initwithitems()iOS - 无法使用 AVQueuePlayer initwithitems()
【发布时间】:2017-01-17 09:52:50
【问题描述】:

我想通过使用循环中的行从另一个数组创建一个 AVPlayerItem 对象数组。它适用于单个项目,但不适用于整个数组。

MPMediaQuery *albumQuery = [MPMediaQuery albumsQuery];
MPMediaPropertyPredicate *albumPredicate = [MPMediaPropertyPredicate predicateWithValue:@"Out Of Exile" forProperty:MPMediaItemPropertyAlbumTitle];
[albumQuery addFilterPredicate:albumPredicate];
NSArray *songs = [albumQuery items];
NSMutableArray <AVPlayerItem*> *items;
NSUInteger i = 0;

while(i < [songs count]){
    AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithURL:[[songs objectAtIndex:i] valueForProperty:MPMediaItemPropertyAssetURL]];
    [items addObject:playerItem];
    i++;
}

AVPlayerItem *item = [[AVPlayerItem alloc] initWithURL:[[songs objectAtIndex:index] valueForProperty:MPMediaItemPropertyAssetURL]]; //manually created item which works
_player = [[AVQueuePlayer alloc] initWithItems:items];

[_player play];

所以,我的问题是我无法正确初始化 AVQueuePlayer 和数组,这让我发疯了。如果我用 InitWithPlayerItem 初始化它并添加我创建的项目,它可以工作(播放),但它不适用于 items 数组中的任何对象。

即使调用InitWithItems:items[index*],也没有任何反应。

【问题讨论】:

    标签: ios objective-c arrays avaudioplayer avqueueplayer


    【解决方案1】:

    您的代码有效;将items 添加到AVQueuePlayer 不起作用同时手动添加一个item 的原因是因为您忘记了初始化数组:

    NSMutableArray <AVPlayerItem*> *items = [[NSMutableArray alloc] init];
    

    在进入循环之前添加上述行,AVQueuePlayer 应该可以工作。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多