协议介绍
- RTMP协议
- 全称:Real Time Messaging Protocol,实时消息传送协议
- 介绍:是Adobe Systems公司为Flash播放器和服务器之间音频、视频和数据传输开发的开放协议
- 协议:长连接TCP
- 原理:每个时刻的数据收到后立刻转发
- 延时:1~3秒
- 优点:主流CDN支持,市面上绝大多数的直播产品采用。协议简单易实现
- 缺点:基于TCP协议,开销大。Adobe私有协议。
- HLS协议
- 全称:HTTP Live Streaming
- 协议:短连接HTTP
- 原理:集合一段时间数据,生成ts切片文件,更新m3u8
- 延时:大于10秒
- HTTP-FLV协议
- 全称:RTMP over HTTP
- 协议:长连接HTTP
- 原理:同RTMP,使用HTTP协议
- 延时:1~3秒
流媒体服务器介绍
- red5(java)和FMS商用
- crtmpserver
- Nginx + RTMP插件
crtmpserver搭建流媒体服务器
- 安装
- cmake安装:apt-get install cmake
- ssl库安装:apt-get install libssl-dev
- crtmpserver下载安装
- 下载:wget https://codeload.github.com/j0sh/crtmpserver/zip/centosinit
- 解压:unzip centosinit
- 进入crtmpserver-centosinit/builders/cmake目录执行cmake . ,再执行make
- 运行
- 进入crtmpserver-centosinit/builders/cmake/目录下,执行 ./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua
- 如果成功运行会有以下打印
- 备注:Ubuntu尽量选择16版本,否则可能会出现编译报错问题,Ubuntu可以从这里下载
FFmpeg下载安装
- 下载地址
- 可以选择一个版本下载,我选的是这个
- 解压后,可以将可执行程序ffmpeg.exe所在路径配置到系统环境变量的path中
使用FFMpeg进行推流
- 推流命令:ffmpeg.exe -i 001.mp4 -c copy -f flv rtmp://192.168.206.131/live/test1
- 参数说明
- ffmpeg.exe : 刚刚安装的FFmpeg可执行程序
- 001.mp4 : 视频文件,你可以随便选一个
- 192.168.206.131:这个地址就是我们刚刚搭建的crtmpserver服务器地址
使用VLC播放器测试
- 下载地址:下载后直接安装就可以
- 打开VLC,选择播放,将 URL拷贝到这里
- 执行推流命令,就可以播放推流的视频了
Nginx下载安装
- 注意 : 先安装依赖,先不要安装nginx
- 可参考我的另一篇文章 nginx下载安装
Nginx-rtmp下载安装
- git clone https://github.com/arut/nginx-rtmp-module.git 这里注意要用git去拉取,直接在网站上下载的zip压缩包编译可能会报错。
- 安装Nginx,进入Nginx的安装包的目录,执行 ./configure --add-module=[Nginx-rtmp路径],再执行make和make install
Nginx-rtmp配置
- 在/usr/local/nginx/conf/nginx.conf配置文件中最外层添加以下内容
-
rtmp { server{ listen 10088; chunk_size 4096; application live { live on; } } }
- 配置完启动nginx
推流
- ffmpeg.exe -i 001.mp4 -c copy -f flv rtmp://192.168.206.131:10088/live
播放
在网页上展示推送状态
- 在/usr/local/nginx/conf/nginx.conf配置文件中http节点中添加以下内容
-
server { listen 10010; location /stat { rtmp_stat all; rtmp_stat_stylesheet stat.xsl; } location /stat.xsl { # 你的nginx-rtmp包的路径 root //home/lingp/share/nginx-rtmp-module; } }
- 重新加载配置 ./nginx -s reload
- 重新访问这个地址http://192.168.206.131:10010/stat,就会看到推送状态
使用ffplay播放
- 跟你的ffmpeg程序在同一个目录下,执行 ffplay.exe rtmp://192.168.206.131:10088/live -fflags nobuffer