推流演示
搭建本地服务器
安装Nginx
- Nginx介绍
- Nginx是什么?
- Nginx安装
// 1> 将Nginx Clone到本地$ brew tap homebrew/nginx// 2> 链接要执行的命令$ brew link pcre rtmp-nginx-module// 3> 安装Nginx$ brew install nginx-full --with-rtmp-module复制代码
-
记住安装配置文件的路径(/usr/local/etc/nginx/nginx.conf)
-
启动即可:
- $ nginx
- 在浏览器输入地址验证:
-
配置Nginx,支持http协议拉流
location /hls { #Serve HLS config types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /usr/local/var/www; add_header Cache-Control no-cache; }复制代码
- 配置Nginx,支持rtmp协议推流
rtmp { server { listen 1935; application rtmplive { live on; max_connections 1024; } application hls{ live on; hls on; hls_path /usr/local/var/www/hls; hls_fragment 1s; } }}复制代码
- 重启Nginx: nginx -s reload
推流测试
- 推流至RTMP到服务器
- 生成地址: rtmp://localhost:1935/rtmplive/demo
ffmpeg -re -i story.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/rtmplive/demo复制代码
- 推流至HLS到服务器
- 生成地址:
ffmpeg -re -i /Users/apple/Desktop/ffmepg/HLS切片/说出你的励志故事.mp4 -vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:1935/hls/demo复制代码
远程服务器配置
0> 安装git1> git clone srs2> cd sis目录* git checkout 2.0release* git pull3> 配置远程服务器环境* ./configure --disable-all --with-ssl --with-nginx --with-hls --with-http-callback --with-http-server --with-http-api --with-ffmpeg --with-transcode --with-librtmp --with-dvr && make4> 启动配置* ./objcs/srs -c conf/srs.conf* 查看pid: pgrep5> 关闭进程* kill nginx/killall nginx6> 推流可以播放hls/rtmp* 加载自己配置的conf文件srs/trunk/conf复制代码
iOS中实现推流
推流概述
- 经过前面的讲解&分析, 我们已经可以做到采集-美颜滤镜-视频编码-协议推流
- 那么下面就需要真正实现iOS中的推流
- 采用RTMP进行推流, 因为该协议实时性非常的高, 但是将Message封装成Trunk的过程非常麻烦, 所有我们这里直接采用框架实现推流.
- 常见的推流框架
- Swift框架: lf.swift
- OC框架: LFLiveKit
推流框架的使用
- LFLiveKit是一个集成了视频采集-美颜-编码-推流为一体的框架,并且使用起来非常的简单, 我们可以在iOS中直接使用该框架进行推流
- 使用方式