在Centos 7.x中使用ffmpeg搭建RTSP流处理环境

Centos7.x 搭建RTSP流处理环境

服务器环境
  • 服务器 centos 7 目前版本CentOS Linux release 7.6.1810下载地址
安装nginx & nginx-rtmp-module
  1. 官网下载nginx 目前版本nginx-1.17.0下载地址
  2. 下载依赖pcre 目前版本pcre-8.38下载地址 使用pcre2 nginx会编译失败
  3. 下载依赖zlib 目前版本zlib-1.2.11下载地址
  4. 下载openssl 目前版本openssl-1.0.2s下载地址
  5. 下载nginx-rtmp-module
    git clone https://github.com/arut/nginx-rtmp-module.git
  6. 安装gcc g++
    yum install gcc
    yum install gcc-c++
  7. 安装pcre
    1. 解压pcre

      tar -zxvf pcre-8.38.tar.gz

    2. 进入解压后的文件夹

      cd pcre-8.38

    3. 编译前配置

      ./configure

    4. 编译

      make

    5. 安装

      make install

  8. 安装zlib
    1. 解压zlib

      tar -zxvf zlib-1.2.11.tar.gz

    2. 进入解压后的文件夹

      cd zlib-1.2.11

    3. 编译前配置

      ./configure

    4. 编译

      make

    5. 安装

      make install

  9. 安装openssl
    1. 解压openssl

      tar -zxvf openssl-1.0.2s.tar.gz

    2. 进入解压后的文件夹

      cd openssl-1.0.2s

    3. 编译前配置

      ./configure

    4. 编译

      make

    5. 安装

      make install

  10. 安装nginx
    1. 解压nginx

      tar -zxvf nginx-1.17.0.tar.gz

    2. 进入解压后的文件夹

      cd nginx-1.17.0

    3. 编译前配置
      # 配置解释
      ./configure
      --prefix=/usr/local/nginx
      --with-pcre=/root/pcre-8.38 # pcre路径 如有不同需要修改
      --with-zlib=/root/zlib-1.2.11 # zlib路径 如有不同需修改
      --with-openssl=/root/openssl-1.0.2s # openssl路径 如有不同需修改
      --add-module=/root/nginx-rtmp-module # nginx-rtmp-module路径 如有不同需要修改
      
      # 运行时去掉换行
      
      ./configure --prefix=/usr/local/nginx --with-pcre=/root/pcre-8.38 --with-zlib=/root/zlib-1.2.11 --with-openssl=/root/openssl-1.0.2s --add-module=/root/nginx-rtmp-module
    4. 编译

      make

    5. 安装

      make install

  11. /etc/init.d 目录下创建 nginx 文件
    touch /etc/init.d/nginx
  12. 编辑nginx文件
    1. vim 打开

      vim /etc/init.d/nginx
    2. 复制以下内容
      #!/bin/bash
      #Startup script for the nginx Web Server
      #chkconfig: 2345 85 15
      nginx=/usr/local/nginx/sbin/nginx
      conf=/usr/local/nginx/conf/nginx.conf
      case $1 in
      start)
      echo -n "Starting Nginx"
      $nginx -c $conf
      echo " done."
      ;;
      stop)
      echo -n "Stopping Nginx"
      killall -9 nginx
      echo " done."
      ;;
      test)
      $nginx -t -c $conf
      echo "Success."
      ;;
      reload)
      echo -n "Reloading Nginx"
      ps auxww | grep nginx | grep master | awk '{print $2}' | xargs kill -HUP
      echo " done."
      ;;
      restart)
      $nginx -s reload
      echo "reload done."
      ;;
      *)
      echo "Usage: $0 {start|restart|reload|stop|test|show}"
      ;;
      esac
    3. 保存并退出
  13. 编辑nginx配置文件
    1. 打开配置文件

      vim /usr/local/nginx/conf/nginx.conf
    2. 添加以下配置
      rtmp {  #rtmp 协议
       server  {
       listen  9999; #端口号
      
           application live{
           live    on;
           record  off;
           }
      
           application hls{ #输出路径
           live    on;
           hls     on;
           hls_path nginx-rtmp-module/hls;
           hls_cleanup off;
           }
       }
      }    
    3. 保存并退出
  14. 启动nginx
    service nginx start
    
  15. 安装ffmpeg
    1. yum升级

      sudo yum install epel-release -y
      sudo yum update -y
      
    2. 安装第三方源
      sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
      sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
      
    3. 安装ffmpeg
      sudo yum install ffmpeg ffmpeg-devel -y
      
  16. rtsp 转 rtmp 流
    # 命令解释
    ffmpeg -i
    "rtsp://admin:[email protected]:46599/cam/realmonitor?channel=1&subtype=0" #摄像头地址
    -f flv -r 15 -an
    "rtmp://192.168.1.240:9999/hls/demo" #输出地址 要和ningx一致 demo可以自定义
    
    # 运行时需要去除换行
    # 命令行启动
    ffmpeg -i "rtsp://admin:[email protected]:46599/cam/realmonitor?channel=1&subtype=0" -f flv -r 15 -an "rtmp://192.168.1.240:9999/hls/demo" >> ./log/ffmpeg.out
    
    # 后台启动 建议写成shell脚本
    nohup ffmpeg -i "rtsp://admin:[email protected]:46599/cam/realmonitor?channel=1&subtype=0" -f flv -r 15 -an "rtmp://192.168.1.240:9999/hls/demo" >> ./log/ffmpeg.out 2>&1 &
    
  17. 问题
    1. 无法访问端口 可能是防火墙开启中 可以关闭防火墙

      # 关闭防火墙命令:
      systemctl stop firewalld
      
      # 开启防火墙
      systemctl start firewalld
      
      # 关闭开机自启动
      systemctl disable firewalld.service
      
      # 开启开机启动
      systemctl enable firewalld.service
      
    2. ffmpeg解码时掉线不会重连 目前尚未解决
    3. 花屏,需要下载ffmpeg源码然后修改并重新编译
      在ffmpeg源码udp.c中:将#define UDP_MAX_PKT_SIZE 65536修改为#define UDP_MAX_PKT_SIZE 655360,或者更大值

原文地址:https://www.cnblogs.com/97jay/p/12286845.html

时间: 2024-10-14 08:48:56

在Centos 7.x中使用ffmpeg搭建RTSP流处理环境的相关文章

ffmpeg接收rtsp流问题

项目使用mingw环境g++5.3,C++调用ffmpeg接收rtsp流,再通过C#显示.结构上是C#调用C++的so文件,读取得到的视频帧(RGB888格式),通过图片控件显示. 一开始是使用opencv打开视频源,本地文件和rtsp的源使用一样的接口,方便使用.但是通过opencv打开rtsp源的时候,发现720p2Mbit的视频能够正常打开,但1080p的视频打开后出马赛克,卡顿比较多. 而同样的视频源,使用VLC就能流畅的打开,不过延时很高,大约1s. 后来又发现,使用i3低电压版CPU

(原)关于获取ffmpeg解析rtsp流sdp中带有sps,pps的情况

 转载请注明出处:http://www.cnblogs.com/lihaiping/p/6612511.html 今天同事准备在android下使用ffmpeg来获取rtsp流,问我如何获取获取sps和pps的情况?因为尽管使用ffmpeg做项目还算熟悉,但用ffmpeg作rtsp client我还真没用过,虽然知道ffmpeg支持rtsp,但一般rtsp client我还是选择自己实现.使用ffmpeg做rtsp client的在这种情况下,如果rtsp的pps,sps在sdp中带有的话,我们

在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境

阿里云的云服务器(ECS)可以选择多种操作系统,打算用它运行 Drupal或者 WordPress ,你最好选择 Linux 系统,这篇文章的演示是基于阿里云的 CentOS 操作系统的服务器.我们在上面搭建一个 nginx + mysql + php-fpm 的环境,这就是常说的 LNMP .我们不过多解释什么是什么,而是着重讲流程与方法,想了解具体的细节,去搜索下吧:)这个手册是在阿里云上测试的,不过应该也适用于其它使用 CentOS 系统的服务器. 背景 宁皓网的< CentOS:在阿里云

Linux---nginx+ffmpeg搭建流媒体服务器

原帖地址:https://blog.csdn.net/loyachen/article/details/50907828 这里实现了简单nginx+ffmpeg 推本地mp4视频文件的功能,以后将会继续更新 环境 系统环境:CentOS release 6.7 (Final) 需求 利用nginx和ffmpeg搭建流媒体服务器 步骤 安装ffmpeg 安装过程可以参考:centos编译安装ffmpeg:http://blog.csdn.net/loyachen/article/details/5

一起学ASP.NET Core 2.0学习笔记(一): CentOS下 .net core2 sdk nginx、supervisor、mysql环境搭建

作为.neter,看到.net core 2.0的正式发布,心里是有点小激动的,迫不及待的体验了一把,发现速度确实是快了很多,其中也遇到一些小问题,所以整理了一些学习笔记: 阅读目录 环境说明 安装CentOS7 安装.NET Core SDK for CentOS7 搭建ftp服务器 安装mysql 部署ASP.NET Core应用程序 配置Nginx 配置守护服务(Supervisor) 环境说明 服务器系统:CentOS 7.3 64位 相关工具:putty.Xftp 服务器软件软件:.n

nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器

本文概要: nginx是非常优秀的开源服务器,用它来做hls或者rtmp流媒体服务器是非常不错的选择.本文介绍了一种简易方法快速搭建rtmp流媒体服务器,也叫rtsp转播,数据源不是读取文件,而是采用获取rtspNal流后使用ffmpeg转播.csdn固本培元:[email protected] 开发环境:centos6.4 (主流的linux服务器选择,30%以上的市场占有率) 需要这几个包. 版本号:nginx 1.7.3  openssl 1.0.2   rtmp-module(版本未知)

CentOS版hadoop完全分布初步搭建

(之前学习时的记录) 整理一下在搭建hadoop完全分布模式时的相关步骤,及搭建过程中遇到的一些问题. 相关环境: 环境:基于win7的VM中CentOS64位系统 台数:3台:分别为master.slave1.slave2 hadoop版本:CDH3-U6 所用到的工具:Xshell(远程链接管理工具).filezilla(可以远程移动文件) 第一部分:在VM中安装CentOS 1.下载 VM自己从网上下载,尽量不要装最新版本的:CentOS选择后缀为iso版本下载 2.安装 VM自己安装:

centos 7.3 配置Tomcat并搭建zrlog-blog网站

centos 7.3 配置Tomcatt并搭建zrlog-blog网站 1.安装JDK-1.8.0 yum安装 yum list *openjdk  //包含多个版本,可以按需安装 yum info  *openjdk yum install java  //默认安装1.8.0版本 yum install java-1.8.0-openjdk-devel   //安装devel包,可选 java -version 注意:多版本并存时,可使用 alternatives命令设定默认使用的版本: 二进

CentOS 6.4中升级编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 以及Kdump配置

在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 今天在isocpp上看到"GCC 4.8.1 released, C++11 feature complete"这个消息,非常兴奋.终于有一个全面支持C++11语言特性的编译器了! 当然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似还没有完全跟上,不过我已经挺满足了,至少可以去尝试各种特性了.另外,之前也有消息说Clang功能上也100%支持C++11了,但是内部还在做