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


相关推荐

  • myeclipse免费版下载_Myeclipse

    myeclipse免费版下载_Myeclipse
     占奇发布于:2011年03月21日(40评)

    MyEclipse9.0经过M1,M2,终于出了正式版(MyEclipseForSpring还是8.6.1)。该版本集成了Eclipse3.6.1,支持HTML5和JavaEE6
    标准版各平台下载地址:官网支持功能自定义下载安装
     
    MyEclipse9.0forWindows下载
    MyEclipse9.0(Wind

    2022年9月26日
  • acwing-257. 关押罪犯(二分图+二分)「建议收藏」

    acwing-257. 关押罪犯(二分图+二分)「建议收藏」S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为 1∼N。他们之间的关系自然也极不和谐。很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突。我们用“怨气值”(一个正整数值)来表示某两名罪犯之间的仇恨程度,怨气值越大,则这两名罪犯之间的积怨越多。如果两名怨气值为 c 的罪犯被关押在同一监狱,他们俩之间会发生摩擦,并造成影响力为 c 的冲突事件。每年年末,警察局会将本年内监狱中的所有冲突事件按影响力从大到小排成一个列表,然后上报到 S 城 Z 市长那里。公务繁忙的 Z 市长只会去看

    2022年8月9日
  • 初识Zigbee协议栈及其安装

    初识Zigbee协议栈及其安装1.什么是Zigbee协议栈?什么是ZigBee协议栈呢?它和ZigBee协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就是协议栈是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议的,进而实现无线数据收发。ZigBee的协议分为两部分,IEEE802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;ZigBee联盟定义了NWK(网络层)、APS(

    2022年5月8日
  • wing是什么_124个叶结点的完全二叉树

    wing是什么_124个叶结点的完全二叉树设一个 n 个节点的二叉树 tree 的中序遍历为(1,2,3,…,n),其中数字 1,2,3,…,n 为节点编号。每个节点都有一个分数(均为正整数),记第 i 个节点的分数为 di,tree 及它的每个子树都有一个加分,任一棵子树 subtree(也包含 tree 本身)的加分计算方法如下:subtree的左子树的加分 × subtree的右子树的加分 + subtree的根的分数若某个子树为空,规定其加分为 1。叶子的加分就是叶节点本身的分数,不考虑它的空子树。试求一棵符合中序遍历为(1,2,

    2022年8月9日
  • snmptrap使用[通俗易懂]

    snmptrap使用[通俗易懂]SNMP简单网络管理协议,其中其支持的一个命令snmptrap命令,用于模拟向管理机发送trap消息。启动陷阱方法:snmptrapd-C-c/etc/snmp/snmptrapd.conf-Lf/var/log/net-snmptrap.log例如:snmptrap-v1-cpublic192.168.2.124.1.3.6.1.4.1…

    2022年8月21日
  • docker部署web项目_docker到底怎么用

    docker部署web项目_docker到底怎么用前言前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用docker构建一个web应用程序。我们将在docker容器中运行一个PythonFlask应用来运行一个web

    2022年7月28日

发表回复

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

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