centos7上通过nginx+ffmpeg搭建rtsp直播流转rtmp视频服务器

centos7上通过nginx+ffmpeg搭建rtsp直播流转rtmp视频服务器centos7上通过nginx+ffmpeg搭建rtsp直播流转rtmp视频服务器

大家好,又见面了,我是你们的朋友全栈君。

准备:

操作系统:CentOS 7
Web服务器:Nginx
版本控制器:Git

搭建:

大部分视频直播平台使用的协议都是RTMP,Nginx也有RTMP的扩展模块,所以我也选用RTMP进行服务器的搭建。

1.获取nginx-rtmp-module模块扩展

1.1.nginx-rtmp-module的Git地址是https://github.com/arut/nginx-rtmp-module.git,直接获取:

git clone https://github.com/arut/nginx-rtmp-module.git

2.安装Nginx

2.1.下载Nginx

wget http://nginx.org/download/nginx-1.15.7.tar.gz

2.2.解压

tar -zxvf nginx-1.15.7.tar.gz

2.3.编译并安装

cd nginx-1.15.7

./configure --prefix={Nginx安装路径}  --add-module={nginx-rtmp-module的路径}  --with-http_ssl_module

make && make install

编译安装过程中可能会出错,一般错误都是缺少一些组件,根据报错信息使用 yum install 进行安装。

3.配置Nginx

3.1.修改Nginx配置

vim {Nginx安装路径}/conf/nginx.conf

打开Nginx配置文件,加入如下部分:

rtmp {   
    server {   
        listen 1935;  #监听的端口 
        chunk_size 4000;   #流整合的最大的块大小,这个值设置的越大 CPU 负载就越小
        #增加对hls的支持
        application hls {  #rtmp推流请求路径
            live on;   #开启实时
            hls on;   #开启hls
            hls_path /usr/share/nginx/html/hls; #推流文件保存的路径,要有写入权限
            hls_fragment 5s;   # 每个文件包含5秒的视频内容
        }   
    }   
} 
Nginx中RTMP模块配置的更多参数可以参考官方文档,到这里Nginx的配置已经完成并且加入了RTMP模块的扩展。

4.启动Nginx

{Nginx安装路径}/sbin/nginx -c {Nginx安装路径}/conf/nginx.conf 
使用浏览器访问服务器,如果出现以下画面表示Nginx成功启动。

在这里插入图片描述
Linux命令

systemctl status firewalld		//查看防火墙状态 
systemctl start firewalld  		//开启防火墙 
systemctl stop firewalld		//关闭防火墙 
service firewalld start 		//开启防火墙 
若遇到无法开启
先用:systemctl unmask firewalld.service 
然后:systemctl start firewalld.service
firewall-cmd --query-port=666/tcp        //查询666端口是否开放;提示 yes,表示开启;no表示未开启。
firewall-cmd --add-port=666/tcp --permanent //添加指定需要开放的端口
firewall-cmd --reload		//重载入添加的端口
firewall-cmd --query-port=666/tcp 	//查询指定端口是否开启成功

4.配置nginx的service服务

vim /etc/init.d/nginx 将下面的代码复制进去保存

#!/bin/bash  
# nginx Startup script for the Nginx HTTP Server  
#  
# chkconfig: - 85 15  
# description: Nginx is a high-performance web and proxy server.  
# It has a lot of features, but it's not for everyone.  
# processname: nginx  
# pidfile: /var/run/nginx.pid  
# config: /usr/local/nginx/conf/nginx.conf  
nginxlog=/var/log/nginx/activity_screen
nginxd=/usr/local/nginx/sbin/nginx  
nginx_config=/usr/local/nginx/conf/nginx.conf  
nginx_pid=/usr/local/nginx/logs/nginx.pid  
RETVAL=0  
prog="nginx" 
# Source function library.  
. /etc/init.d/functions
# Source networking configuration.  
. /etc/sysconfig/network  
# Check that networking is up.  
[ ${NETWORKING} = "no" ] && exit 0  
[ -x $nginxd ] || exit 0  
[ -d $nginxlog ] || mkdir -p $nginxlog  
# Start nginx daemons functions.  
start() {  
if [ -e $nginx_pid ];then 
   echo "nginx already running...." 
   exit 1  
fi  
   echo -n $"Starting $prog: " 
   daemon $nginxd -c ${nginx_config}  
   RETVAL=$?  
   echo  
   [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx  
   return $RETVAL  
}  
# Stop nginx daemons functions.  
stop() {  
        echo -n $"Stopping $prog: " 
        killproc $nginxd  
        RETVAL=$?  
        echo  
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid  
}  
# reload nginx service functions.  
reload() {  
    echo -n $"Reloading $prog: " 
   $nginxd -s reload  
    RETVAL=$?  
    echo  
}  
# See how we were called.  
case "$1" in 
start)  
        start  
        ;;  
stop)  
        stop  
        ;;  
reload)  
        reload  
        ;;  
restart)  
        stop  
        start  
        ;;  
status)  
        status $prog  
        RETVAL=$?  
        ;;  
*)  
        echo $"Usage: $prog {start|stop|restart|reload|status|help}" 
        exit 1  
esac  
exit $RETVAL 



切换目录,启动服务

cd /etc/init.d

chmod +x nginx

/sbin/chkconfig --level 345 nginx on

service nginx restart  可选  start | stop | restart | reload | status |  help

5.设置开机启动

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
sudo chmod +x /etc/init.d/nginx
sudo update-rc.d nginx defaults

6.启动nginx服务

sudo service nginx start
sudo service nginx stop
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/106421.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据挖掘应用研究案例精选合集[通俗易懂]

    数据挖掘应用研究案例精选合集[通俗易懂]数据挖掘应用研究案例精选合集数据挖掘(英语:Datamining),掌握数据挖掘技能,金矿就在您的脚下。基于数据挖掘技术的精确智能营销随着大数据、移动应用等的快速发展,已经越来越重要,企业对这方面人才需求缺口也越来越大。本文集主要从数据挖掘应用演讲案例方向介绍了数据挖掘的实际应用,从宏观角度帮助你了解什么是数据挖掘。阅读全文和小伙伴们一起来吐槽

    2022年6月16日
    27
  • python shutil删除_python删除文件

    python shutil删除_python删除文件importos删除文件:os.remove()删除空目录:os.rmdir()递归删除空目录:os.removedirs()递归删除目录和文件(类似DOS命令DeleteTree):方法1:自力更生,艰苦创业#Deleteeverythingreachablefromthedirectorynamedin’top’,#assumingtherearenosymbol…

    2022年5月7日
    53
  • 原生JS投票特效

    效果:http://hovertree.com/texiao/js/24/效果图:代码如下:转自:http://hovertree.com/h/bjaf/jsdiaocha.htm特效:htt

    2021年12月23日
    50
  • JAVA中Action层, Service层 ,model层 和 Dao层的功能区分

    JAVA中Action层, Service层 ,model层 和 Dao层的功能区分JAVA中Action层, Service层 ,model层 和 Dao层的功能区分

    2022年4月24日
    72
  • canvas rotate方法

    canvas rotate方法接上一篇图片上传功能中的ios下横屏拍的图片,最终上传却变成了竖向的解决方法。理解canvas的rotate,得先了解几个概念varc=document.getElementById("myCanvas");varctx=c.getContext("2d");ctx.fillRect(0,0,50,100);1、rotate的圆心是canvas的00位置2、将canvas…

    2025年7月10日
    0
  • 基于单片机的智能交通灯控制系统的设计实验_单片机控制系统红绿灯设计

    基于单片机的智能交通灯控制系统的设计实验_单片机控制系统红绿灯设计本设计采用了一套可用于智能交通灯的方案。该套设计方案采用51单片机作为系统的主控芯片,使用LED数码管,红黄绿三种颜色的发光二极管。通过对定时器的设置和中断的控制,实现交通信号灯的功能。本设计引入了车流量检测,通过在地面铺设环形线圈传感器,测量车辆通过数量,检测车流量的大小,来自动调节红绿灯的显示时间。还设置了按键模块,在紧急情况时可通过按键模块实现任一方向的可持续通行的效果,经过仿真对本文方案进行验证。测试结果表明,所设计的智能信号交通灯微机控制系统符合设计要求。……

    2022年9月24日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号