[objective-c]加载两个 AVPlayers 的一个视频

发布时间: 2016/10/4 2:51:01
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有两个不同的意见,为了发挥相同的视频,我创建了一个应用程序,将视频运行时的两个视图之间切换几次。

我目前是通过装载与视频的第一个视图,如下所示︰

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]);
                        }
                    });
 }];

在我第二个视图中我想要从 dispatch_get_main_queue 加载视频,以便在两个视图视频都处于同步状态。

我希望有人能帮我用从第一到第二个视图加载的视频数据。

解决方法 1:

它是非常简单︰

Init 的第一个球员︰

AVAsset *asset = [AVAsset assetWithURL:URL];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithAsset:asset];
AVPlayer *player = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerLayer *playerLayer = [AVPlayerLayer playerLayerWithPlayer:player];

第二个球员在同样的方式,但是,使用同一资产从第一。 我已验证,它工作。

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

这种抽象意味着你可以玩一个给定的资产,同时使用不同的球员

这句话是从这个页面。

官方微信
官方QQ群
31647020