可以使用AVPlayer实例同时播放两个视频吗?

| 我目前正在使用
MPMoviePlayerController
在我的应用中播放视频。当我从一个视频切换到另一个视频时,过渡不是很顺利。我得出的结论是,我需要做的是淡出第一个视频,同时淡入第二个视频。为此,我需要同时播放两个视频。我知道我不能用
MPMoviePlayerController
做到这一点。在文档中。可以用ѭ2done完成吗?我可以在应用程序中同时拥有两个instances2ѭ实例,播放不同的电影,同时播放两个电影给用户看吗?     
已邀请:
        您只能使用MPMoviePlayer一次播放一部电影。但是,您可以使用AVPlayer同时播放多个视频(在AVFoundation中,较低级别的音频-视频框架)。请查看以下示例:     
        这是您一次播放8个,然后通过滚动一次又播放8个的方法:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
UICollectionViewCell *cell = (UICollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:kCellIdentifier forIndexPath:indexPath];

// Enumerate array of visible cells\' indexPaths to find a match
if ([self.collectionView.indexPathsForVisibleItems
     indexOfObjectPassingTest:^BOOL(NSIndexPath * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
         return (obj.item == indexPath.item);
     }]) dispatch_async(dispatch_get_main_queue(), ^{
         [self drawLayerForPlayerForCell:cell atIndexPath:indexPath];
     });


    return cell;
}

- (void)drawPosterFrameForCell:(UICollectionViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    [self.imageManager requestImageForAsset:AppDelegate.sharedAppDelegate.assetsFetchResults[indexPath.item]
                                                          targetSize:AssetGridThumbnailSize
                                                         contentMode:PHImageContentModeAspectFill
                                                             options:nil
                                                       resultHandler:^(UIImage *result, NSDictionary *info) {
                                                           cell.contentView.layer.contents = (__bridge id)result.CGImage;
                                                       }];
}

- (void)drawLayerForPlayerForCell:(UICollectionViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
    cell.contentView.layer.sublayers = nil;
    [self.imageManager requestPlayerItemForVideo:(PHAsset *)self.assetsFetchResults[indexPath.item] options:nil resultHandler:^(AVPlayerItem * _Nullable playerItem, NSDictionary * _Nullable info) {
        dispatch_sync(dispatch_get_main_queue(), ^{
            if([[info objectForKey:PHImageResultIsInCloudKey] boolValue]) {
                [self drawPosterFrameForCell:cell atIndexPath:indexPath];
            } else {
                AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:[AVPlayer playerWithPlayerItem:playerItem]];
                [playerLayer setVideoGravity:AVLayerVideoGravityResizeAspectFill];
                [playerLayer setBorderColor:[UIColor whiteColor].CGColor];
                [playerLayer setBorderWidth:1.0f];
                [playerLayer setFrame:cell.contentView.layer.bounds];
                [cell.contentView.layer addSublayer:playerLayer];
                [playerLayer.player play];
            }
        });
    }];
}
请注意,“ 5”方法会将图像放置在无法播放视频的位置,因为它存储在iCloud而非设备上。     
        
MPMoviePlayerController
一次只播放一个视频。 但是,您可以使用
AVPlayer
同时播放多个视频。 以下是用于同时播放多个视频的教程链接-同时播放视频     
        如果要在iOS应用中同时播放两个视频,请使用AVPlayer播放视频。     

要回复问题请先登录注册