iOS从零开始学习直播之1.播放
对于直播来说,客户端主要做两件事情,推流和播放。今天先讲播放。
播放流程
1.拉流:服务器已有直播内容,从指定地址进行拉取的过程。其实就是向服务器请求数据。
2.解码:对视屏数据进行解压缩。
3.渲染:生成图片的过程。视屏其实就是一张张连续的图片进行切换,一张图片就是一帧。帧率顾名思义就是每秒显示的图片数,当帧率达到16时,人眼就会认为是流畅的。是不是很神奇。
这里的每个步骤能弄明白都可以成为人才了,如果还能解决其中的不足,那你就是尖端人才了。弄懂这些需要耗费大量的时间,还好有ijkplayer视屏直播框架,有了它,即时你不懂这些过程,也可以进行直播播放,大神真多。
ijkplayer视屏直播框架
ijkplayer视屏直播框架下载地址,这是开源的,喜欢研究源码的同学可以去下载,,基于ffmpeg,同时支持iOS和Android,非常强大。上述的三个过程它全给你做好了,只要你集成到自己工程里,就能实现播放直播了。
&emsp ;集成到自己的工程中,最好先打包,我这里用打包好的debug模式下的,可以去百度云下载。怎么集成的,同学们可以去看这篇文章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站的工程师真是很
iOS从零开始学习直播之1.播放的更多相关文章
- iOS从零开始学习直播之音频1.播放本地音频文件
现在直播越来越火,俨然已经成为了下一个红海.作为一个资深码农(我只喜欢这样称呼自己,不喜欢别人这样称呼我),我必须赶上时代的潮流,开始研究视频直播.发现视屏直播类的文章上来就讲拉流.推流.采集.美 ...
- iOS从零开始学习直播之音频2.后台播放和在线播放
本篇主要讲音频的后台播放和在线播放. 后台播放 上一篇写的工程运行之后程序退至后台,发现运行不了,歌停止了,这显然不行,音乐后台播放是标配啊.今天就来讲一下后台播放. 1.在plist文件里,告诉 ...
- iOS从零开始学习直播之2.采集
直播的采集由采集的设备(摄像头.话筒)不同分为视频采集和音频采集,本篇文章会分别介绍. 1.采集步骤 1.创建捕捉会话(AVCaptureSession),iOS调用相机和话筒之前都需要创建捕 ...
- iOS从零开始学习直播之3.美颜
任何一款直播软件都必须进行美颜,不然哪来的那么多美女,所以技术改变世界,不只是说说而已.美颜在采集的时候就得就行,让主播实时看到直播的效果. 1.美颜原理 其实美颜的本质就是美白和磨皮,分别通 ...
- iOS从零开始学习直播之音频4.歌词
上一篇讲了歌曲的切换,这一篇主要讲歌词部分的实现. 先看效果图.当歌手唱到这句歌词时候,我们要标记出来,这里显示字体为黄色. 1.获取歌词 一般歌词都是一个链接.类似于"http ...
- iOS从零开始学习直播之音频3.歌曲切换
上周迟到了,周末去参加OSC源创会了,还是有点启发的.但这不是重点,重点是 上一篇我只是实现了一首歌曲的在线播放,这肯定是不够的.这一篇博客主要是实现了多首歌曲的顺序播放以及上一首和下一首切换. ...
- 从零开始学习PYTHON3讲义(十四)写一个mp3播放器
<从零开始PYTHON3>第十四讲 通常来说,Python解释执行,运行速度慢,并不适合完整的开发游戏.随着电脑速度的快速提高,这种情况有所好转,但开发游戏仍然不是Python的重点工作. ...
- 从零开始学习CocoaPods安装和使用
从零开始学习CocoaPods安装和使用 转载: Code4App原创:http://code4app.com/article/cocoapods-install-usage http://m.i ...
- IOS深入学习
iOS超全开源框架.项目和学习资料汇总(1)UI篇 iOS超全开源框架.项目和学习资料汇总(2)动画篇 iOS超全开源框架.项目和学习资料汇总(3)网络和Model篇 数据库 FMDB – sqlit ...
随机推荐
- json与JavaScript对象互换
1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...
- 如何正确使用日志Log
title: 如何正确使用日志Log date: 2015-01-08 12:54:46 categories: [Python] tags: [Python,log] --- 文章首发地址:http ...
- 页面中多个script块之间的关系
一:函数声明与函数定义表达式在函数调用间的区别 <script type="text/javascript"> doA(); var doA = function(a ...
- 使用cmake自动构建工程
公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...
- Oracle 数据库知识汇总篇
Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...
- LINQ to SQL Select查询
1. 查询所有字段 using (NorthwindEntities context = new NorthwindEntities()) { var order = from n in contex ...
- 玩转ajax
1.什么是ajax? Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写. 2.ajax需要什么基础? HTML 用于建立 Web 表单并确定应 ...
- mac好用的markdown编辑器
在刚开始接触markdown的时候,就被吸引了.此后一直在找贴心的好用的markdown编辑器.印象笔记和马克飞象配合着用也是挺好的,唯一的缺点就是比较封闭,发个笔记的链接给同学,还得注册才能看,导致 ...
- mysql-5.6.34 Installation from Source code
Took me a while to suffer from the first successful souce code installation of mysql-5.6.34. Just pu ...
- 记录在Windows上安装和使用Oracle数据库过程中的坑
1.安装Oracle Oracle软件是免费的,可以去官网下载相应的安装包.但是如果用于商业用途需要购买License.官网上针对各种平台,32位和64位都有,如果在Windows一般会下载到两个文件 ...