零基础学习iOS直播之播放

对于直播来说,客户端主要做两件事情,推流和播放。今天先讲播放。

播放流程

  1. 拉流:服务器已有直播内容,从指定地址进行拉取的过程。其实就是向服务器请求数据。
  2. 解码:对视屏数据进行解压缩。
  3. 渲染:生成图片的过程。视屏其实就是一张张连续的图片进行切换,一张图片就是一帧。帧率顾名思义就是每秒显示的图片数,当帧率达到16时,人眼就会认为是流畅的。是不是很神奇。

这里的每个步骤能弄明白都可以成为人才了,如果还能解决其中的不足,那你就是尖端人才了。弄懂这些需要耗费大量的时间,还好有ijkplayer视屏直播框架,有了它,即时你不懂这些过程,也可以进行直播播放,大神真多。

ijkplayer视屏直播框架

ijkplayer视屏直播框架下载地址,这是开源的,喜欢研究源码的同学可以去下载,,基于ffmpeg,同时支持iOS和Android,非常强大。上述的三个过程它全给你做好了,只要你集成到自己工程里,就能实现播放直播了。

&emsp ;集成到自己的工程中,最好先打包,我这里用打包好的debug模式下的,可以去http://xiazai.jb51.net/201612/yuanma/IJKMediaFramework.framework_jb51.rar下载。怎么集成的,同学们可以去看这篇文章《详解iOS中集成ijkplayer视频直播框架》。和导入第三方库一样,导入到自己工程中,同时还要添加依赖的动态库。

直播

#import "FHLiveViewController.h"
#import <IJKMediaFramework/IJKMediaFramework.h>
#import <UIImageView+WebCache.h>
// ijk下载地址: https://pan.baidu.com/s/1c2p9D0s
@interface FHLiveViewController ()
// 播放器
@property (nonatomic, strong) IJKFFMoviePlayerController *playerVC;
@end
@implementation FHLiveViewController

- (void)viewDidLoad {
 [super viewDidLoad];
 // 隐藏导航栏
 [self.navigationController.navigationBar setHidden:YES];
 // 设置背景色
 [self.view setBackgroundColor:[UIColor whiteColor]];
 // 拉流地址
 NSURL *url = [NSURL URLWithString:self.liveUrl];
 // 实例化播放器,传入拉流地址即可
 _playerVC = [[IJKFFMoviePlayerController alloc] initWithContentURL:url withOptions:nil];
 // 准备播放 准备好了自动播放
 [_playerVC prepareToPlay];
 // 设置播放器尺寸
 _playerVC.view.frame = [[UIScreen mainScreen] bounds];
 [self.view addSubview:_playerVC.view];
 // 设置填充模式:铺满
 [_playerVC setScalingMode:IJKMPMovieScalingModeAspectFill];
}
- (void)viewWillDisappear:(BOOL)animated{
 [super viewWillDisappear:animated];
 // 关闭播放时,要停止播放器,否则会崩溃
 [_playerVC pause];
 [_playerVC stop];
}

就这么几行代码,播放就实现了我们仅仅是传了一个拉流地址。这个框架简直是太强大了,自动帮我们完成了拉流、解码、渲染,我们什么都不用做,B站的工程师真是很🐂,剩下的送礼物、聊天室慢慢集成。

demo下载

demo下载地址。下载下来运行,发现报错。

那是因为我没有在工程里上传ijkplayer视屏直播框架,我能上传上去,但下载太慢了,什么原因大家都懂得。我把ijkplayer视屏直播框架放到http://xiazai.jb51.net/201612/yuanma/IJKMediaFramework.framework_jb51.rar上了,下载下来之后,放到LiveAppDemo-master文件夹里,重新打开就可以运行了。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持我们!

(0)

相关推荐

  • iOS直播类APP开发流程解析

    本文为大家分享了iOS直播类APP开发流程,供大家参考,具体内容如下 一 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示 1.数据采集: 摄像机及拾音器收集视频及音频数据,此时得到的为原始数据 涉及技术或协议: 摄像机:CCD.CMOS 拾音器:声电转换装置(咪头).音频放大电路 2.数据编码: 使用相关硬件或软件对音视频原始数据进行编码处理(数字化)及加工(如音视频混合.打包封装等),得到可用的音视频数据 涉及技术或协议: 编码方式:CBR.VB

  • 详解iOS中集成ijkplayer视频直播框架

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

  • 零基础学习iOS直播之采集

    直播的采集由采集的设备(摄像头.话筒)不同分为视频采集和音频采集,本篇文章会分别介绍. 1.采集步骤 创建捕捉会话(AVCaptureSession),iOS调用相机和话筒之前都需要创建捕捉对话,把输入输出设备添加进对话中. 往会话中添加视频输入对象(AVCaptureDeviceInput). 往会话中添加音频输入对象(AVCaptureDeviceInput). 往会话中添加视频输出对象(AVCaptureVideoDataOutput). 往会话中添加音频输出对象(AVCaptureAud

  • 零基础学习iOS直播之播放

    对于直播来说,客户端主要做两件事情,推流和播放.今天先讲播放. 播放流程 拉流:服务器已有直播内容,从指定地址进行拉取的过程.其实就是向服务器请求数据. 解码:对视屏数据进行解压缩. 渲染:生成图片的过程.视屏其实就是一张张连续的图片进行切换,一张图片就是一帧.帧率顾名思义就是每秒显示的图片数,当帧率达到16时,人眼就会认为是流畅的.是不是很神奇. 这里的每个步骤能弄明白都可以成为人才了,如果还能解决其中的不足,那你就是尖端人才了.弄懂这些需要耗费大量的时间,还好有ijkplayer视屏直播框架

  • 零基础学习AJAX之AJAX框架

    上文(零基础学习AJAX之AJAX的简介和基础)对ajax异步请求服务器做了详细的介绍和基础应用,可以看出,ajax的一些过程是相对不变的.不必要每次发送请求都写一遍发送代码,一些ajax开发人员已经把他们的过程封装成ajax框架. 本节主要介绍ajaxLib和ajaxGold两款框架. 1.ajaxLib ajaxLib是一个非常小巧的ajax框架. 使用它首先将文件使用引入到页面中.改框架是一个直接获取XML的框架,调运函数如下: loadXMLDoc(url,callback,boolea

  • 零基础学习C/C++需要注意的地方

    谈及C/C++,功能强大.应用广泛,一旦掌握了后,若是再自学其他语言就显得轻而易举了.那为什么学C/C++的人少呢?很多人认为C/C++虽然博大精深,但也难学.其实就本人认为C/C++并非是"difficult(困难)"的,只要你能理清思路,掌握它的精髓,配合一套教材.那么学C/C++是一件非常容易且又其乐无穷的事.今天本人就与大家一起谈谈如何学习C/C++或者说学习C/C++应从哪几方面着手. 先来说说C语言. 1.入门后多看代码 在有一定基础以后一定要多看别人的代码.注意代码中的算

  • 零基础学习Python爬虫

    目录 爬虫 为什么我们要使用爬虫 爬虫准备工作 爬虫项目讲解 代码分析 1.爬取网页 2.逐一解析数据 3.保存数据 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做. 为什么我们要使用爬虫 互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中. 过去,我们通过书籍.报

  • Bootstrap零基础学习第一课之模板

    最近需要做一个简单的Web页面.  考虑到前端经验不足,为了快速产出,同时项目只是一个工具,对项目没有什么要求,所以我选择了Bootstrap这个框架作为Web框架.  写从零开始学Bootstrap的初衷:  看了半天的Bootstrap的文档,包括官方的(http://v3.bootcss.com/getting-started/)和非官方的(http://www.runoob.com/bootstrap/bootstrap-tutorial.html),以及他人写的简单入门博客(http:

  • 零基础学习AJAX之制作自动校验的表单

    传统网页在注册时检测用户名是否被占用,传统的校验显然缓慢笨拙. 当ajax出现后,这种体验有了很大的改观,因为在用户填写表单时,签名的表单项已经发送给了服务器,然后根据用户填写好的内容进行数据查询.在查询号无需页面刷新就自动给了提示.类似这样的应用大大的提高了用户的体验,本节简单介绍自动校验表单制作方法.从原理上分析ajax的作用. 1.搭建框架 首先为html框架 复制代码 代码如下: <form name="register">             <p>

  • 零基础学习教程之Linux下搭建android开发环境

    不得已重新配置,这里记下详细步骤,分享给大家. 一.安装jdk,具体步骤如下: 1.将jdk-7u4-linux-i586.tar拷贝到linux下得/home/yan/download目录,新建一个目录/home/yan/android.所以和android相关的都安装到/home/yan/android这个目录,所有的源安装文件都放到download下.切换到root,在download目录下输入命令:tar -zxvf  jdk-7u4-linux-i586.tar -C ../andro

  • 零基础学习AJAX之AJAX的简介和基础

    本节简介(异步链接服务器对象)XMLHTTPRequest以及AJAX的简介. AJAX即"Asynchronous Javascript And XML"(异步JavaScript和XML). AJAX有四个方面的好处:1.即减轻了服务器的负担.2带来了更好的用户体验.3.基于标准被广泛的支持.4.拥有更好的页面呈现和数据分离. 技术名称 技术说明 javascript javascript是通用的脚本语言,AJAX是用javascript编写的 css 用户界面的样式通过css来修

  • C#零基础学习理解委托

    说来惭愧,在大学的课程中,竟然没有听说过委托这个名称.那么今天我就带着大家一起探讨下委托和事件. 咱们先来看下委托 我主要从以下几个方面讲解 1,  为什么使用委托  2.什么是委托  3.委托如何使用 为什么使用委托? 委托是c#中非常重要的一个概念,使用委托使程序员可以将方法引用封装在委托对象内.然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法.与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的. 什么是委托? 委托是一种引用方法的类型,一旦为委

随机推荐