123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- //
- // 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<ZFPlayerMediaPlayback> asset) { //结束播放
- // [weakSelf.player stop];
- };
- [_player setPlayerPlayStateChanged:^(id<ZFPlayerMediaPlayback> asset, ZFPlayerPlaybackState playState) {
- if(playState == ZFPlayerPlayStatePlayStopped) {
- // NSLog(@"播放暂停");
- }
- }];
- [_player setPlayerPlayTimeChanged:^(id<ZFPlayerMediaPlayback> 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<ZFPlayerMediaPlayback> _Nonnull asset, NSURL * _Nonnull assetURL) {
- @strongify(self)
- self.controlView.portraitControlView.fullScreenBtn.selected = YES;
- self.player.muted = NO;
- };
- }
- }
- @end
|