// // GoodsVideoCollectionViewCell.m // westkissMob // // Created by 王猛 on 2022/9/15. // #import "GoodsVideoCollectionViewCell.h" @interface GoodsVideoCollectionViewCell () @property (nonatomic, assign) BOOL isFirst; @end @implementation GoodsVideoCollectionViewCell - (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { self.isFirst = YES; [self xxx_loadIntView]; } return self; } -(void)xxx_loadIntView{//@"http://www.w3school.com.cn/example/html5/mov_bbb.mp4" [self.contentView addSubview:self.forPlayView]; self.forPlayView.frame = self.bounds; } - (UIView *)forPlayView { if(_forPlayView == nil) { _forPlayView = [[UIView alloc]initWithFrame:self.bounds]; _forPlayView.hidden = YES; UIButton *voiceBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [voiceBtn setImage:[UIImage imageNamed:@"goods_voice_open"] forState:UIControlStateNormal]; [voiceBtn setImage:[UIImage imageNamed:@"goods_voice_close"] forState:UIControlStateSelected]; [voiceBtn addTarget:self action:@selector(handleVoiceBtnEvent:) forControlEvents:UIControlEventTouchUpInside]; [_forPlayView addSubview:voiceBtn]; voiceBtn.frame = CGRectMake(self.mj_h-60, self.mj_w-60, 44, 44); } return _forPlayView; } -(void)handleVoiceBtnEvent:(UIButton *)btn{ btn.selected = !btn.selected; if (self.player.isMuted) { self.player.muted = NO; }else{ self.player.muted = YES; } } #pragma mark - 网络视频模块 - (ZFAVPlayerManager *)playerManager { if(_playerManager == nil) { _playerManager = [[ZFAVPlayerManager alloc] init]; } return _playerManager; } - (ZFPlayerController *)player { if(_player == nil) { _player = [[ZFPlayerController alloc] initWithPlayerManager:self.playerManager containerView:self.forPlayView]; _player.controlView = self.controlView; _player.playerDisapperaPercent = 1.0f; __weak typeof(self) weakSelf = self; _player.playerDidToEnd = ^(id asset) { //结束播放 // [weakSelf.player stop]; }; [_player setPlayerPlayStateChanged:^(id asset, ZFPlayerPlaybackState playState) { if(playState == ZFPlayerPlayStatePlayStopped) { // NSLog(@"播放暂停"); } }]; [_player setPlayerPlayTimeChanged:^(id asset, NSTimeInterval currentTime, NSTimeInterval duration) { // NSLog(@"播放改变currentTime - %f duration - %f", currentTime, duration); }]; } return _player; } -(ZFPlayerControlView *)controlView { if (_controlView == nil) { _controlView = [[ZFPlayerControlView alloc]init]; _controlView.fastViewAnimated = YES; _controlView.autoHiddenTimeInterval = 5; _controlView.autoFadeTimeInterval = 0.5; _controlView.prepareShowLoading = YES; _controlView.prepareShowControlView = NO; [_controlView.portraitControlView.fullScreenBtn setImage:[UIImage imageNamed:@"goods_voice_open"] forState:UIControlStateNormal]; [_controlView.portraitControlView.fullScreenBtn setImage:[UIImage imageNamed:@"goods_voice_close"] forState:UIControlStateSelected]; [_controlView.portraitControlView.fullScreenBtn addTarget:self action:@selector(handleVoiceBtnEvent:) forControlEvents:UIControlEventTouchUpInside]; } return _controlView; } - (void)playerDealloc { //网络视频 if(_playerManager) { _playerManager = nil; } if(_player) { _player.viewControllerDisappear = YES; [_player stop]; _player = nil; } } -(void)setModel:(GoodsBannerModel *)model{ NSString *videoUrl = model.url; self.forPlayView.hidden = NO; if (self.isFirst) { self.isFirst = NO; [self.player.currentPlayerManager setAssetURL:[NSURL URLWithString:videoUrl]]; @weakify(self) self.player.playerReadyToPlay = ^(id _Nonnull asset, NSURL * _Nonnull assetURL) { @strongify(self) self.controlView.portraitControlView.fullScreenBtn.selected = YES; self.player.muted = NO; }; } } @end