1、采用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相关推荐

  1. linux p2p视频播放器,avplayer: 一个基于FFmpeg、libtorrent的P2P播放器实现.

    一直以来, 在多媒体播放器这块, 即使目前有许多开源的播放器项目, 但要写一个播放器仍然是件非常困难的事, 如果在windows上你有可能需要熟悉DShow, 另外的话, 你需要学习一堆开源项目(比如 ...

  2. 视频播放器 AVPlayer

    {// 设置音频播放AVAudioSession *audioSession = [AVAudioSession sharedInstance];[audioSession setCategory:A ...

  3. AVPlayer自定制视频播放器(1)——视频播放器基本实现

    在iOS多媒体开发的过程中,经常会用到视频播放器,简单是视频播放器,直接使用苹果封装好的MPMoviePlayerController和MPMoviePlayerViewController就可以实现 ...

  4. 自定义视频播放器与慢放滚轮

    受同学之邀,帮忙自定义一控件.需求是:开发慢放滚轮,用手指拨动实现帧级的慢速播放,滚轮可双向拨动,其滚动具有惯性,滚动速度决定视频播放的速度.需求很明朗,可我却是一头雾水.说实话,在此之前我还没有自定 ...

  5. iOS AVPlayer视频播放器

    代码地址如下: http://www.demodashi.com/demo/11168.html 一.运行效果 二.实现过程 ①.创建播放器avPlayer //创建播放器url = [url str ...

  6. WMPlayer视频播放器,AVPlayer的封装

    WMPlayer视频播放器,AVPlayer的封装,继承UIView,想怎么玩就怎么玩.支持播放mp4.m3u8.3gp.mov,网络和本地视频同时支持.全屏和小屏播放同时支持.自动感应旋转屏幕.ht ...

  7. iOS 教你使用MP、AVPlayer、AVPlayerVC构建一个完整的视频播放器

    1.前言 标题必须要浮夸!要感觉像是一个大新闻.长者如是说. 其实是前几天去面试的时候,被要求说必须做过视频播放相关项目.有点闹心之余,就花了点时间在家写了一个简单播放器,基本实现了主流播放器的大致功 ...

  8. AVPlayer自定制视频播放器(2)——耳机线控、中断以及AVAudioSession的使用

    在上一篇博客中说到了使用AVPlayer进行自定义视频播放器.这里讲继续讲述视频播放器的自定制.下面是上一篇博客的链接,本篇博客将承接上一篇博客进行讲解,如果有AVPlayer自定制视频播放器基础的同 ...

  9. html ios视频播放器,良心推荐!iOS端的视频播放应用

    不知道大家还记不记得之前小编我推荐的最好用的iOS音乐播放器,如果没看过,可以点击这里.既然之前介绍了一款iOS端的音乐播放器给大家,那么今天就介绍一款iOS端十分好用的万能解码的视频播放器. 使用i ...

最新文章

  1. 基于C#的UDP协议的同步实现
  2. 《星球大战:前线2》预告片发布
  3. matlab实现定标旋转,Matlab摄像机标定工具箱的使用说明精编.doc
  4. k8s使用port-forward访问集群中的应用程序(只能在执行命令的机器上开放端口)
  5. 聊聊阿里面试的三个层次!
  6. CentOS 7 巨大变动之 firewalld 取代 iptables
  7. java 文件流关闭 finally,关于java:为什么需要在“ finally”内关闭文件,而仍将其嵌入在“ try / catch”块内?...
  8. 200822C阶段一文件
  9. 依赖注入在 dotnet core 中实现与使用:2 使用 Extensions DependencyInjection
  10. jquery ui accordion的详细参数
  11. java rest client_RestClient工具类
  12. 凯恩帝k1000ti参数设置_凯恩帝K1000T系统用户手册.pdf
  13. 机器人油封_机器人油封 机器人减速机 机器人伺服电机油封 KVNOK油封
  14. 小技巧|Cadence安装之后,原理图DSN文件的默认图标不对如何进行修改
  15. C++ “电子宠物游戏”
  16. 华为云服务-应用部署2-创建环境到创建应用
  17. spark常用的linux命令,GitHub - Sparkinzy/linux-command: Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。...
  18. 一对一直播怎么开发?一对一直播app开发关键点
  19. 如何将PDF扫描件转换为JPG图片格式?PDF转JPG图片教程
  20. 广西大学计算机学院导师张振荣,广西大学硕士研究生导师简介-张振荣

热门文章

  1. 炫!迪奥元宇宙首展、著名建筑师马岩松元宇宙首作落地百度希壤
  2. 免费crm系统适合互联网企业吗?
  3. 北京市怀柔区谷歌卫星地图下载
  4. 显示器原理(1):CRT显示器
  5. c语言中用html写按钮,HTML按钮代码怎么写?如何写按钮的代码
  6. EAS BOS 序时簿动态列的实现
  7. 【Mac】Mac与PlayCover、Mac关闭sip
  8. 【快速上手教程】PC Web、Uni-App、小程序集成环信IM都在这里了
  9. 信息技术课程计算机硬件,初一《信息技术》《计算机硬件及工作原理》说课稿-初中信息技术说课.doc...
  10. 微信小程序:炫酷手持滚动弹幕生成小工具