iOS开发-ZFPlayer的简单使用 播放单个网络视频
前言
关于ZFPlayer播放单个网络视频案例,它的网络列表视频案例在gitHub上面很多。
开发准备
podfile导入 pod 'ZFPlayer', '~> 3.3.3' #, '~> 3.2.17' # 视频播放
pod 'ZFPlayer/ControlView'
pod 'ZFPlayer/AVPlayer'
代码
#import "ViewController.h"
#import <ZFPlayer/ZFAVPlayerManager.h>
#import <ZFPlayer/ZFPlayerControlView.h> @interface ViewController ( ) @property ( nonatomic, strong) UIView * forPlayView;
@property ( nonatomic, strong) ZFPlayerController * player;
@property ( nonatomic, strong) ZFAVPlayerManager * playerManager;
@property ( nonatomic, strong) ZFPlayerControlView * controlView;
@property ( nonatomic, strong) UIButton * closeBtn; @end @implementation ViewController- ( void ) touchesBegan: ( NSSet< UITouch * > * ) touches withEvent: ( UIEvent * ) event { NSString * videoUrl = @"http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" ; [ self . player. currentPlayerManager setAssetURL: [ NSURL URLWithString: videoUrl] ] ; self . forPlayView. hidden = NO; self . closeBtn. hidden = NO;
} - ( void ) viewDidLoad { [ super viewDidLoad] ; [ self . view addSubview: self . forPlayView] ; [ self . view addSubview: self . closeBtn] ;
} - ( void ) viewWillLayoutSubviews { [ super viewWillLayoutSubviews] ; self . forPlayView. frame = self . view. bounds; self . closeBtn. frame = self . view. bounds;
} - ( void ) viewDidDisappear: ( BOOL) animated { [ super viewDidDisappear: animated] ; [ self playerDealloc] ;
} - ( UIView * ) forPlayView { if ( _forPlayView == nil) { _forPlayView = [ [ UIView alloc] init] ; _forPlayView. hidden = YES; } return _forPlayView;
} - ( UIButton * ) closeBtn { if ( _closeBtn == nil) { _closeBtn = [ [ UIButton alloc] init] ; [ _closeBtn addTarget: self action: @selector ( closeBtnClick) forControlEvents: UIControlEventTouchUpInside] ; } return _closeBtn;
} #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 ; _player. playerDidToEnd = ^ ( id< ZFPlayerMediaPlayback> asset) { } ; [ _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. prepareShowLoading = YES; } return _controlView;
} - ( void ) playerDealloc { if ( _playerManager) { _playerManager = nil; } if ( _player) { _player. viewControllerDisappear = YES; [ _player stop] ; _player = nil; }
} - ( void ) closeBtnClick { self . closeBtn. hidden = YES; self . forPlayView. hidden = YES;
} @end
注意
因为播放的是网络视频, 记得在info.plist ->右击->sourceCode->插入ATS
< key> NSAppTransportSecurity< / key>
< dict> < key> NSAllowsArbitraryLoads< / key> < true/ >
< / dict>
如下任何一个地方都行