视频播放器AVPlayer
2、通過單例視頻管理類全局控制視屏的播放暫停和移除視頻view
3、播放視圖和工具條獨立封裝,完全解耦
4、封裝獨立的彈框視圖,可加網絡判斷來是否繼續播放
github地址:https://github.com/Janko0/JKAVPlayer
播放器使用
//
//? ViewController.m
//? JKPlayer
//
//? Created by 楊可 on 2016/12/23.
//? Copyright ? 2016年 Janko. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()<JKPlayerViewDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
??? [super viewDidLoad];
?? ?
??? UIButton *playBtn = [[UIButton alloc] init];
??? playBtn.frame = CGRectMake(100, 400, 100, 100);
??? [playBtn setTitle:@"播放" forState:UIControlStateNormal];
??? [playBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
??? [self.view addSubview:playBtn];
??? [playBtn addTarget:self action:@selector(playVideo) forControlEvents:UIControlEventTouchUpInside];
?? ?
? ?
?? ?
?
//??? [[TTPlayerViewMananger playerViewMananger] replaceSuperView:self.view];
//??? [[TTPlayerViewMananger playerViewMananger] setTopView:self.topView playerDeleagte:self];
?? ?
}
- (void)playVideo {
??? [[JKPlayerViewMananger playerViewMananger] removePlayer];
??? if ([JKPlayerViewMananger playerViewMananger].playerView == nil) {
??????? [[JKPlayerViewMananger playerViewMananger] setPlayerViewFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH * (9 / 16.0)) topView:nil selfSuperView:self.view delegate:self];
??? }
??? [JKPlayerViewMananger playerViewMananger].playerView.showBackBtn = YES;
??? if ([JKPlayerViewMananger playerViewMananger].playerView.indicatorView.isAnimating) {
??????? [[JKPlayerViewMananger playerViewMananger].playerView.indicatorView startAnimation];
??? }
??? //http://baobab.cdn.wandoujia.com/14468618701471.mp4
??? [[JKPlayerViewMananger playerViewMananger] playWithVideoUrlString:@"http://test.bjrenrentong.com/hls/host1-d5fbb6440bea7f29c7edf23f6bc7b89c.mov/m3u8"];
}
- (CGRect)getHalfScreenFrame
{
??? return CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_WIDTH * (9 / 16.0));
}
- (void)loadVideoFinish:(BOOL)isLoadSuccess
{
??? if (isLoadSuccess)
??? {
??????? [[JKPlayerViewMananger playerViewMananger] playVideo];
??? }
??? else
??? {
??????? [SVProgressHUD showErrorWithStatus:@"視頻出錯啦"];
??? }
}
@end
播放器管理類實現
//
//? JKPlayerViewMananger.m
//? JKPlayer
//
//? Created by Janko on 16/6/28.
//? Copyright ? 2016年 Janko. All rights reserved.
//
#import "JKPlayerViewMananger.h"
@interface JKPlayerViewMananger ()
@end
@implementation JKPlayerViewMananger
static JKPlayerViewMananger *mananger;
static JKPlayerView *playerView;
+ (instancetype)playerViewMananger {
??? static dispatch_once_t onceToken;
??? dispatch_once(&onceToken, ^{
??????? mananger = [[JKPlayerViewMananger alloc] init];
??? });
??? return mananger;
}
- (instancetype)setPlayerViewFrame:(CGRect)frame topView:(UIView *)topView selfSuperView:(UIView *)selfSuperView delegate:(id<JKPlayerViewDelegate>)delegate {
??? self.playerView = [[JKPlayerView alloc] initWithFrame:frame topView:topView selfSuperView:selfSuperView delegate:delegate];
??? if (self.playerView.isFullScreen) {
??????? [self.playerView changeToHalfScreen];
??? }
??? return self;
}
- (void)playWithVideoUrlString:(NSString *)videoUrlString selfSuperView:(UIView *)selfSuperView {
??? [self.playerView playWithVideoUrlString:videoUrlString selfSuperView:selfSuperView];
}
- (void)seJKopView:(UIView *)topView playerDeleagte:(id<JKPlayerViewDelegate>) delegate {
??? [self.playerView seJKopView:topView playerDeleagte:delegate];
}
#pragma mark - 外部接口
- (void)changeToHalfScreen {
??? [self.playerView changeToHalfScreen];
}
- (void)playWithVideoUrlString:(NSString *)videoUrlString {
??? [self.playerView playWithVideoUrlString:videoUrlString];
}
- (void)releaseSelf {
??? [self.playerView releaseSelf];
}
- (void)replaceSuperView:(UIView *)selfSuperView {
??? [self.playerView replaceSuperView:selfSuperView];
}
- (void)removePlayer {
??? [self.playerView removePlayer];
??? [self.playerView.selfSuperView removeFromSuperview];
??? self.playerView = nil;
}
- (void)pauseVideo {
??? [self.playerView pauseVideo];
}
- (void)playVideo {
??? [self.playerView playVideo];
}
@end
具體實現內容到GitHub上下載源代碼github地址:https://github.com/Janko0/JKAVPlayer,有什么問題歡迎提出(麻煩給個star)
總結
以上是生活随笔為你收集整理的视频播放器AVPlayer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: miui 系统组件 功能提示
- 下一篇: 锁定计算机加密码怎么设置方法,电脑加密锁