iOS 快速集成ijkplayer视频直播与录播框架

最近由于需求的变动,项目内把最初最简单的原生直播框架变成了B站开源的ijkplayer框架,下面把具体的过程总结一下整个过程都比较简单,重要的是理解的过程,集成完毕之后,视频的用户体验比苹果原生好了很多。最后会贴出demo的git地址,只需要简单的操作就能快速的在项目中加入该框架

先把B站开源ijkplayer的github地址贴出来 https://github.com/Bilibili/ijkplayer

未使用过的同学,请去自取有助于理解整个视频框架的原理。

** 为何要改变原来项目内的视频直播,录播框架?**

首先我先说一下为何我们项目内会修改原来原生的直播与视频框架,这个过程能体现出来ijkplayer对比iOS原生的各种优点。

1.我们最初使用的原声直播是使用MPMoviePlayerController,该类苹果官方有提示让使用AVPlayerViewController来替代,虽然MPMoviePlayerController就目前来看还可以正常使用,但是可能在未来不久的时间就会出现问题。

2.对比直播:直播的第一指标是延迟问题,苹果原生的直播协议仅支持hls协议,而ijkplayer不仅支持hls,也支持rtmp协议,hsl协议的弊端就是让人头疼的延迟问题,该协议会把视频切成一段一段的m3u8的视频片段,延迟一般来说会到10秒左右,而rtmp协议延迟非常小,从修改完之后的情况来说,视频的流畅度提高了非常多。这条原因,是修改直播框架的根本原因之一。

3.对比录播流:如果同时播放云端存储的视频流,它存在着一些不可回避的问题,那就是支持的视频编码格式很有限:H.264、MPEG-4,扩展名(压缩格式):.mp4、.mov、.m4v、.m2v、.3gp、.3g2等。这种支持对于运营的操作要求很高,支持的格式比较少。而ijkplayer不仅包括了原生可以支持的所有格式,主流的视频格式基本可以全部支持。

4.对比用户交互:MPMoviePlayerController自定义样式和用户交互的一些手势操作非常有限,而ijkplayer你几乎可以定制一切你可以想到的交互,主流的直播app都在使用。

对比以上几条原因,我们在项目中进行了进一步的升级,使用ijkplayer的需求非常迫切。

** 主要代码相关**

具体demo会在下方贴出链接,这里仅演示最重要的几步要求。

1.下载完毕demo后,由于ijk的framework包比较大所以没有跟着项目一起上传,需要先将github地址详情内的ijk的framework的zip包下载下来,导入项目,并且将路径配置好。

其实打出来ijk的framework包的这个过程是一个非常好的理解过程,由于有很多打包流程,这里贴出来一个比较详细的供大家参考

点这里,这个过程比较详细

2.导入下图中的几个文件

Paste_Image.png

3.项目内初始化关键代码,写入即可运行

    // 创建盛放视频播放器的父视图 用于改变全屏和缩小
    _headPlayerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0,  [UIScreen mainScreen].bounds.size.width,  [UIScreen mainScreen].bounds.size.width*videoTempProgress)];
    [self.view addSubview:_headPlayerView];

   //测试地址
   //rtmp 直播 香港电视台测试地址 rtmp://live.hkstv.hk.lxdns.com/live/hks
   //录播 播放流http://hc.yinyuetai.com/uploads/videos/common/E49E014999C93F5A88EA01B2B48161CE.flv?sc=fc5276d37b6cd89c&br=775&vid=2178416&aid=2650&area=Other&vst=3

  //该模型可以随意设置  来传入你想自定义的内容
  XYVideoModel *model = [[XYVideoModel alloc]init];
    model.url = [NSURL URLWithString:@"http://hc.yinyuetai.com/uploads/videos/common/E49E014999C93F5A88EA01B2B48161CE.flv?sc=fc5276d37b6cd89c&br=775&vid=2178416&aid=2650&area=Other&vst=3"];
    model.name = @"测试标题测试标题测试标题";
    model.coverimg = @"coverimg.jpeg";

    // 创建视频播放控件
    self.playerView = [[LMVideoPlayerView alloc]initWithModel:model];
    //遵循LMVideoPlayerViewDelegate 来实现退出全屏 和 放大的代理
    self.playerView.delegate = self;
    [_headPlayerView addSubview:self.playerView];
#pragma mark XYVideoPlayerViewDelegate
//全屏按钮代理方法
- (void)fullScreenWithPlayerView:(LMVideoPlayerView *)videoPlayerView
{
//点击放大旋转和返回缩小的方法
    if (self.playerView.isRotate) {
        [UIView animateWithDuration:0.3 animations:^{
            _headPlayerView.transform = CGAffineTransformRotate(_headPlayerView.transform, M_PI_2);
            _headPlayerView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
            self.playerView.frame = _headPlayerView.bounds;

        }];

    }else{

        [UIView animateWithDuration:0.3 animations:^{
            _headPlayerView.transform = CGAffineTransformIdentity;
            _headPlayerView.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width*videoTempProgress);
            self.playerView.frame = _headPlayerView.bounds;
        }];

    }
}
//返回按钮代理方法
- (void)backToBeforeVC{

    if (!self.playerView.isRotate) {

        [self.navigationController popViewControllerAnimated:YES];
    }
}

** github demo地址**

demo地址,欢迎star

如果有任何疑问和对ijk的理解问题,可以随时留言或者私信沟通

作者:死涵Leesim
链接:https://www.jianshu.com/p/3c109b2c5ba9
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/sundaysgarden/p/9066095.html

时间: 2024-12-31 19:43:01

iOS 快速集成ijkplayer视频直播与录播框架的相关文章

iOS中集成ijkplayer视频直播框架

ijkplayer 是一款做视频直播的框架,基于ffmpeg,支持 Android 和 iOS,网上也有很多集成说明,但是个人觉得还是不够详细,在这里详细的讲一下在 iOS 中如何集成ijkplayer,即便以前从没有接触过,按着下面做也可以集成成功! 一.下载ijkplayer   ijkplayer下载地址:https://github.com/Bilibili/ijkplayer 下载完成后解压,解压后文件夹内部目录如下图: 二.编译 ijkplayer 说是编译 ijkplayer,其实

iOS:集成ijkplayer视频直播

介绍: ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着下面做也可以集成成功! original link : http://www.open-open.com/lib/view/open1463123602429.html 集成: 一. 下载ijkplayer ijkplayer下载地址 下载完成后解

iOS开发之集成ijkplayer视频直播

ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着下面做也可以集成成功! 编辑:Bison 投稿: jianshu_wl 一. 下载ijkplayer ijkplayer下载地址 下载完成后解压, 解压后文件夹内部目录如下图: 二. 编译 ijkplayer 说是编译 ijkplayer, 其实是编译 f

集成IJKplayer视频直播框架

ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着下面做也可以集成成功! 一. 下载ijkplayer ijkplayer下载地址:https://github.com/Bilibili/ijkplayer下载完成后解压, 解压后文件夹内部目录如下图: ijkplayer-master文件夹内容.png

iOS快速集成搜索界面下拉菜单框架

前言 这次推出的控件,比较常用,搜索界面下拉菜单,如果喜欢我的文章,可以关注我微博:吖了个峥,也可以来小码哥,了解下我们的iOS培训课程.后续还会更新更多内容,有任何问题,欢迎简书留言峥吖... Demo效果: 效果图.gif Demo演示: 1.创建下拉菜单 YZPullDownMenu *menu = [[YZPullDownMenu alloc] init]; menu.frame = CGRectMake(0, 20, YZScreenW, 44); [self.view addSubv

iOS----集成ijkplayer视频直播

ijkplayer 是一款做视频直播的框架, 基于ffmpeg, 支持 Android 和 iOS, 网上也有很多集成说明, 但是个人觉得还是不够详细, 在这里详细的讲一下在 iOS 中如何集成ijkplayer, 即便以前从没有接触过, 按着下面做也可以集成成功! 一. 下载ijkplayer ijkplayer下载地址 下载完成后解压, 解压后文件夹内部目录如下图: 二. 编译 ijkplayer 说是编译 ijkplayer, 其实是编译 ffmpeg, 在这里我们已经下载好了ijkpla

iOS开发_初识视频直播

一.使用第三方ijkPlayer框架开发直播 1.去到B站得github主页,找到ijkplayer项目,下载源码 ijkplayer下载地址 2.Demo的使用以及如何编译Demo 请移步如何快速的开发一个完整的iOS直播app(播放篇) 其实里面讲的很详细,我也是参照这个写的Demo.然后在他的基础上加了一点东西.(不废话我直接上我的代码) 先看看效果图 特点 1.纯代码Masonry布局 2.集成ijkplayer第三方库,实现拉流播放 3.打包ijkplayer静态库,实现release

(转)iOS快速集成指南

目录 第一步:将ShareSDK导入到你的工程中 第二步:添加依赖框架 第三步:引入头文件和注册ShareSDK的AppKey 第四步:配置社会化平台的AppKeys 第五步:设置rootViewController属性 第六步:分享内容 可选:iPad版本分享菜单集成 可选:使用服务器托管模式初始化SDK 可选:添加微信平台分享 可选:添加QQ好友平台分享 可选:添加Google+平台分享 可选:添加Pinterest平台分享 可选:添加易信平台分享 第一步:将ShareSDK导入到你的工程中

iOS 快速集成启动页广告

前言 由于项目中要用到启动页广告,所以做了简单的研究,同时借鉴网易新闻和蘑菇街的交互写了一个简单的demo,现在写出来供大家参考,可能由于个人局限会有一些bug和不完善的地方,也希望大家能够友善提醒和指正. Github地址:https://github.com/Running2snail/LLFullScreenAd 效果图如下: 代码分析:上面主要展示了广告图提过按钮显示的两种方式,一种是常见的计数倒计时+跳过的样式(大部分的广告启动页都是这种方式),一种是通过环形倒计时+跳过的样式(仿网易