使用一个视频加载两个 AVPlayer

Ron*_*vdb 3 objective-c ios avplayer

我有两个不同的视图用于播放同一视频,我正在创建一个应用程序,该应用程序将在视频运行时在两个视图之间切换多次。

我目前加载视频的第一个视图如下:

NSURL *url = [NSURL URLWithString:@"http://[URL TO VIDEO HERE]"];
AVURLAsset *avasset = [[AVURLAsset alloc] initWithURL:url options:nil];

AVPlayerItem *item = [[AVPlayerItem alloc] initWithAsset:avasset];
player = [[AVPlayer alloc] initWithPlayerItem:item];

playerLayer = [[AVPlayerLayer playerLayerWithPlayer:player] retain];
CGSize size = self.bounds.size;
float x = size.width/2.0-202.0;
float y = size.height/2.0 - 100;

//[player play];
playerLayer.frame = CGRectMake(x, y, 404, 200);
playerLayer.backgroundColor = [UIColor blackColor].CGColor;

[self.layer addSublayer:playerLayer];
NSString *tracksKey = @"tracks";

[avasset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
 ^{
     dispatch_async(dispatch_get_main_queue(),
                    ^{
                        NSError *error = nil;
                        AVKeyValueStatus status = [avasset statusOfValueForKey:tracksKey error:&error];

                        if (status == AVKeyValueStatusLoaded) {

                            //videoInitialized = YES;
                            [player play];
                        }
                        else {
                            // You should deal with the error appropriately.
                            NSLog(@"The asset's tracks were not loaded:\n%@", [error localizedDescription]);
                        }
                    });
 }];
Run Code Online (Sandbox Code Playgroud)

在我的第二个视图中,我想从dispatch_get_main_queue加载视频,以便两个视图中的视频同步。

我希望有人可以帮助我将视频数据从第一个视图加载到第二个视图中。

Nik*_*ita 5

这很简单:

初始化第一个播放器:

AVAsset *asset = [AVAsset assetWithURL:URL];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];
Run Code Online (Sandbox Code Playgroud)

第二个玩家也以同样的方式使用第一个玩家的相同资产。我已经验证过,有效。

Apple 页面上有您需要的所有信息: https://developer.apple.com/library/mac/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/02_Playback.html

这种抽象意味着您可以同时使用不同的播放器来播放给定的资产

这句话来自这个页面。