音视频(一)之使用FFMpeg工具推流并搭建流媒体服务器Nginx + RTMP

协议介绍

  • 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
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/new9232/article/details/131747469