前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >centos7上通过nginx+ffmpeg搭建rtsp直播流转rtmp视频服务器

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

作者头像
全栈程序员站长
发布2022-08-05 08:16:26
1.2K0
发布2022-08-05 08:16:26
举报
文章被收录于专栏:全栈程序员必看

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

准备:

操作系统: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,直接获取:

代码语言:javascript
复制
git clone https://github.com/arut/nginx-rtmp-module.git

2.安装Nginx

2.1.下载Nginx

代码语言:javascript
复制
wget http://nginx.org/download/nginx-1.15.7.tar.gz

2.2.解压

代码语言:javascript
复制
tar -zxvf nginx-1.15.7.tar.gz

2.3.编译并安装

代码语言:javascript
复制
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配置

代码语言:javascript
复制
vim {Nginx安装路径}/conf/nginx.conf

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

代码语言:javascript
复制
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秒的视频内容
        }   
    }   
} 
代码语言:javascript
复制
Nginx中RTMP模块配置的更多参数可以参考官方文档,到这里Nginx的配置已经完成并且加入了RTMP模块的扩展。

4.启动Nginx

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

Linux命令

代码语言:javascript
复制
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 将下面的代码复制进去保存

代码语言:javascript
复制
#!/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 

切换目录,启动服务

代码语言:javascript
复制
cd /etc/init.d

chmod +x nginx

/sbin/chkconfig --level 345 nginx on

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

5.设置开机启动

代码语言:javascript
复制
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服务

代码语言:javascript
复制
sudo service nginx start
sudo service nginx stop

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备:
  • 搭建:
  • 1.获取nginx-rtmp-module模块扩展
    • 1.1.nginx-rtmp-module的Git地址是https://github.com/arut/nginx-rtmp-module.git,直接获取:
    • 2.安装Nginx
      • 2.1.下载Nginx
        • 2.2.解压
          • 2.3.编译并安装
          • 3.配置Nginx
            • 3.1.修改Nginx配置
            • 4.配置nginx的service服务
            • 5.设置开机启动
            • 6.启动nginx服务
            相关产品与服务
            云直播
            云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档