最近对直播类app十分上心,十分想做一个demo出来,鉴于目前对此一无所知,还是站在巨人们对肩膀上开始学习吧。
本次先试着搭建直播推流、拉流、播放的框架。演示的话以网上大神提供的LXLiveAll为例,本人对内部代码现在不了解。先搭建框架吧。
主要使用的三个技术:
- 推流:LFLiveKit
- 播放:ijkplayer
- 服务器:nginx+rtmp+ffmpeg
一、推流/拉流
LFLiveKit:框架支持RTMP,由Adobe公司开发。列出LFLiveKit的github地址https://github.com/LaiFengiOS/LFLiveKit
LFLiveKit库里已经集成GPUImage框架用于美颜功能,GPUImage基于OpenGl开发,纯OC语言框架,封装好了各种滤镜同时也可以编写自定义的滤镜,其本身内置了多达125种常见的滤镜效果。可谓功能是相当的强大。
1)项目中集成LFLiveKit
使用CocoaPods可以很方便的引入LFLiveKit框架,具体的配置方式展示以我写的Podfile文件为例
Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios,'8.0'
target "LXLiveAll" do
pod 'LFLiveKit'
pod 'AFNetworking'
pod 'MJExtension'
pod 'MLTransition'
pod 'MJRefresh'
pod 'SDWebImage'
end
二、播放
ijkplayer:是基于FFmpeg的跨平台播放器框架,github地址:https://github.com/Bilibili/ijkplayer
添加ijkplayer的方式有两种:
一种是编译ijkplayer引入IJKMediaPlayer.xcodeproj
一种是通过编辑ijkplayer自己构建IJKMediaFramework库(一般真机+模拟器)
1)由于配置时间较久,可以直接跳下载大神们以构建好的IJKMediaFramework库。
2)添加完IJKMediaFramework库后还需要导入IJKMediaFramework所需的框架。
三、服务器搭建
一、打开终端安装Homebrow
输入命令行安装Homebrow
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
如果想卸载可以使用以下命令
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
二、安装nginx
2.1) 先clone nginx项目到本地:
brew tap homebrew/nginx
2.2)执行安装
brew install nginx-full --with-rtmp-module
以上步骤nginx和rtmp模块就安装好了,开始来配置nginx的rtmp模块
输入brew info nginx-full
查看nginx安装路径
通过输出打印可以看到nginx的配置文件在
/usr/local/etc/nginx/nginx.conf
然后进入进入/usr/local/etc/nginx/nginx.conf文件里,在最后一行添加如下代码
rtmp {
server {
listen 1935;
application rtmplive {
live on;
record off;
}
}
}
2.3) 重启nginx
nginx -s reload
三、启动nginx服务
输入命令:
nginx
在浏览器中输入地址:
http:
如果出现‘Welcom to nginx’则表示nginx安装成功。
四、安装ffmepg工具
ffmpeg实现视频的一系列处理
brew install ffmpeg
安装ffmpeg时间就要长一点了. 如果速度过慢, 可以尝试翻墙。等待的过程中, 再安装一个支持rtmp协议的视频播放器VLC。
安装成功后测试推流操作:
五:ffmpeg推流
以我mac桌面的一个test.mp4视频为例, 执行推流命令。(保证nginx已经正常打开)
ffmpeg -re -i /Users/maying/Desktop/test.mp4 -vcodec copy -f flv rtmp:
在VLC中打开rtmp://localhost:1935/rtmplive/room
地址
VLC ->File->Open Network..->输入地址如下
到这里 推流:LFLiveKit + 播放:ijkplayer + 服务器:nginx+rtmp+ffmpeg的直播需要的框架就搭建好了,接下来可以愉快的进行下一步探索了。
看到几篇不错的入门blog,收藏一下哈:
1、http://www.jianshu.com/p/339041855364
2、http://www.jianshu.com/p/30595a5bff42
3、http://www.jianshu.com/p/a0397c98d907
4、http://www.jianshu.com/p/b9486b0f770f
5、http://www.jianshu.com/p/8ea016b2720e