AVPlayer在iOS7中没有显示视频,在iOS8和iOS9上运行良好

时间:2015-10-27 05:51:01

标签: ios objective-c ios7 avplayer

这是我的代码,

@interface ViewController ()
{
    AVPlayer *avPlayer;
}
@end

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    UIView *containerView = [[UIView alloc] initWithFrame:self.view.frame];
    NSString *filepath = [[NSBundle mainBundle] pathForResource:@"TestVideo" ofType:@"mp4"];
    AVAsset *asset = [AVAsset assetWithURL:[NSURL fileURLWithPath:filepath]];
    AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset];
    avPlayer = [AVPlayer playerWithPlayerItem:playerItem];
    AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer];

    avPlayerLayer.frame = self.view.frame;
    [containerView.layer addSublayer:avPlayerLayer];
    [self.view addSubview:containerView];
    [avPlayer play];
}

2 个答案:

答案 0 :(得分:2)

这不应该适用于任何iOS版本

AVPlayer *avPlayer = [AVPlayer playerWithPlayerItem:playerItem];

超出范围并在viewDidAppear结束时被取消分配。

您应该将AVPlayer分配给类成员变量,以阻止这种情况发生。

否则视频文件可能存在问题。

答案 1 :(得分:0)

您的AVPlayer项目需要强大的参考,因为它设置为自动为零

请更改

@interface ViewController ()

{
    AVPlayer *avPlayer;
}
@end

到这个

@interface ViewController ()  
@property (strong, nonatomic) AVPlayer *avPlayer;
@end

并将所有avPlayer引用更改为self.avPlayer 我希望这会有所帮助。