协议介绍
- 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

 


















