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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm使用技巧及常用快捷键_键盘怎么自定义改键

    pycharm使用技巧及常用快捷键_键盘怎么自定义改键PyCharm自身提供了大量实用的快捷键,但是由于自己之前其他软件的快捷键使用习惯与此不同,这就需要在PyCharm量身DIY属于自己的快捷键了。快来按照下面的流程操作吧!!!1、File—>Settings【Settings的快捷键大家看到了嘛!!!Ctrl+Alt+S】2、Keymap—>齿轮状设置—>Duplicate建议在设置快捷键之前…

    2022年8月25日
    5
  • Android 官方文档:(一)动画和图像 —— 1.5 画布和画图

    Android 官方文档:(一)动画和图像 —— 1.5 画布和画图

    2021年11月13日
    43
  • php小程序开发完整教程_苹果X怎么下载微信分身

    php小程序开发完整教程_苹果X怎么下载微信分身使用HBuilderX与微信开发者工具实现授权登陆功能,测试号申请

    2025年8月5日
    3
  • 快速熟悉 PyQt5 与 Eric6 的极速 GUI 开发

    完美安装Anaconda3+PyQt5+Eric6一文对PyQt5与Eric6的安装做了详细的记录。这次将结合使用PyQt5和Eric6以实例的方式向大家展示PyQt5与Eric6的极速GUI开发,同时也可以让大家对PyQt5与Eric6先混个脸熟。用Eric6与PyQt5结合,非常方便的实现界面与逻辑分离,满足python的极速GUI编程,你只需要关注程序的逻辑实现,而不需要在

    2022年4月8日
    67
  • 软件测试流程详解「建议收藏」

    软件测试流程详解「建议收藏」1.软件测试的定义:使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。百度百科定义:软件测试(英语:SoftwareTesting),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错…

    2022年6月7日
    23
  • 报关与报检的区别和联系_简述报关与报检的区别

    报关与报检的区别和联系_简述报关与报检的区别区别是,报关是向海关申报,海关查验的重点是申报的货物与实际是否相符报检是向商检局申报,商检的查验重点是货物是否符合合同的或国家或国际的相关标准和要求.所有进出口货物均必须向海关申报不是所有的进出口货物都需要报商检,(看货物的HS编码是否属于免检范围)联系是,先报检后报关,凭商检检货合格后出具的”换证凭条”(单)换通关单,再凭通关单及其他相关单据向海关申报问题:通关单

    2022年9月15日
    3

发表回复

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

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