Linux下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介: Linux下使用Nginx搭建Rtmp流媒体服务器,实现视频直播功能

一、环境介绍

操作系统:虚拟机运行的Ubuntu18.04 64位系统

二、流媒体服务器介绍

百度百科: 流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流媒体的典型特征是把连续的音频和视频信息压缩后放到网络服务器上,用户边下载边观看,而不必等待整个文件下载完毕。由于流媒体技术的优越性,该技术广泛应用于视频点播、视频会议、远程教育、远程医疗和在线直播系统中。作为新一代互联网应用的标志,流媒体技术在近几年得到了飞速的发展。

流媒体服务器是流媒体应用的核心系统,是运营商向用户提供视频服务的关键平台。流媒体服务器的主要功能是对流媒体内容进行采集、缓存、调度和传输播放。流媒体应用系统的主要性能体现都取决于媒体服务器的性能和服务质量。因此,流媒体服务器是流媒体应用系统的基础,也是最主要的组成部分。

流媒体服务器的主要功能是以流式协议(RTP/RTSP、MMS、RTMP等)将视频文件传输到客户端,供用户在线观看;也可从视频采集、压缩软件接收实时视频流,再以流式协议直播给客户端。

nginx服务器是开源的高性能的http服务器,反向代理服务器,在国内许多公司应用比较多。

rtmp是实时消息传输协议(real time messaging protocol),主要应用在流媒体传输,实时音视频通信的协议。

三、搭建流媒体服务器需要下载的软件包

下载示例:  

wbyq@wbyq:~/work_pc$ mkdir nginx      
wbyq@wbyq:~/work_pc$ cd nginx/
wbyq@wbyq:~/work_pc/nginx$ wget http://nginx.org/download/nginx-1.10.3.tar.gz
wbyq@wbyq:~/work_pc/nginx$ wget http://zlib.net/zlib-1.2.11.tar.gz
wbyq@wbyq:~/work_pc/nginx$ wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
wbyq@wbyq:~/work_pc/nginx$ wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
wbyq@wbyq:~/work_pc/nginx$ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

下载过程:

wbyq@wbyq:~/work_pc/nginx$ wget http://nginx.org/download/nginx-1.10.3.tar.gz
--2020-04-08 09:12:24--  http://nginx.org/download/nginx-1.10.3.tar.gz
正在解析主机 nginx.org (nginx.org)... 62.210.92.35, 95.211.80.227, 2001:1af8:4060:a004:21::e3
正在连接 nginx.org (nginx.org)|62.210.92.35|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 911509 (890K) [application/octet-stream]
正在保存至: “nginx-1.10.3.tar.gz”
nginx-1.10.3.tar.gz                    100%[=========================================================================>] 890.15K  38.2KB/s    用时 20s   
2020-04-08 09:12:45 (44.0 KB/s) - 已保存 “nginx-1.10.3.tar.gz” [911509/911509])
wbyq@wbyq:~/work_pc/nginx$ wget http://zlib.net/zlib-1.2.11.tar.gz
--2020-04-08 09:12:48--  http://zlib.net/zlib-1.2.11.tar.gz
正在解析主机 zlib.net (zlib.net)... 68.66.224.49
正在连接 zlib.net (zlib.net)|68.66.224.49|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 607698 (593K) [application/x-gzip]
正在保存至: “zlib-1.2.11.tar.gz”
zlib-1.2.11.tar.gz                     100%[=========================================================================>] 593.46K   164KB/s    用时 3.6s  
2020-04-08 09:12:57 (164 KB/s) - 已保存 “zlib-1.2.11.tar.gz” [607698/607698])
wbyq@wbyq:~/work_pc/nginx$ wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
--2020-04-08 09:13:05--  https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
正在解析主机 ftp.pcre.org (ftp.pcre.org)... 131.111.8.88
正在连接 ftp.pcre.org (ftp.pcre.org)|131.111.8.88|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 2065161 (2.0M) [application/x-gunzip]
正在保存至: “pcre-8.40.tar.gz”
pcre-8.40.tar.gz                       100%[=========================================================================>]   1.97M   166KB/s    用时 11s   
2020-04-08 09:13:17 (191 KB/s) - 已保存 “pcre-8.40.tar.gz” [2065161/2065161])
wbyq@wbyq:~/work_pc/nginx$ wget https://github.com/arut/nginx-rtmp-module/archive/master.zip
--2020-04-08 09:13:39--  https://github.com/arut/nginx-rtmp-module/archive/master.zip
正在解析主机 github.com (github.com)... 52.74.223.119
正在连接 github.com (github.com)|52.74.223.119|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://codeload.github.com/arut/nginx-rtmp-module/zip/master [跟随至新的 URL]
--2020-04-08 09:13:40--  https://codeload.github.com/arut/nginx-rtmp-module/zip/master
正在解析主机 codeload.github.com (codeload.github.com)... 13.250.162.133
正在连接 codeload.github.com (codeload.github.com)|13.250.162.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 545945 (533K) [application/zip]
正在保存至: “master.zip”
master.zip                             100%[=========================================================================>] 533.15K   392KB/s    用时 1.4s  
2020-04-08 09:13:42 (392 KB/s) - 已保存 “master.zip” [545945/545945])

如果有些软件包下载不下来,可以登录对应的官网下载或者百度直接搜索下载。

四、编译安装软件包

4.1 下载编译时需要依赖的一些工具

    wbyq@wbyq:~/work_pc/nginx$sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev

4.2 将上面下载的压缩包进行解压

wbyq@wbyq:~/work_pc/nginx$ tar xvf openssl-1.0.2k.tar.gz
wbyq@wbyq:~/work_pc/nginx$ tar xvf nginx-rtmp-module-master.tar.gz
wbyq@wbyq:~/work_pc/nginx$ tar xvf nginx-1.8.1.tar.gz
wbyq@wbyq:~/work_pc/nginx$ tar xvf pcre-8.40.tar.gz
wbyq@wbyq:~/work_pc/nginx$ tar xvf zlib-1.2.11.tar.gz

4.3 配置nginx,生成Makefile文件

(进入到nginx-1.8.1目录下,配置nginx

wbyq@wbyq:~/work_pc/nginx$ cd nginx-1.8.1/
wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1$ ./configure --prefix=/usr/local/nginx --with-debug --with-pcre=../pcre-8.40 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2k --add-module=../nginx-rtmp-module-master

执行命令时,注意下自己的依赖路径是否正确。

4.4 修改Makefile,去掉-Werror选项

执行完上一步之后,打开objs/Makefile 文件,找到-Werror选项并删除。

wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1$ gedit objs/Makefile 

image.png

4.5 编译安装

wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1$ make
wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1$ sudo make install

image.png

五、配置nginx服务

5.1 设置开机启动

wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1/nginx_install/sbin$ sudo wget http://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1/nginx_install/sbin$ sudo chmod +x /etc/init.d/nginx
wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1/nginx_install/sbin$ sudo update-rc.d nginx defaults

5.2 控制nginx服务的3个命令: 启动、停止、重启

sudo service nginx start
sudo service nginx stop
sudo service nginx restart

5.3 修改Nginx的配置文件

打开/usr/local/nginx/conf/nginx.conf文件,在文件最后面加入下面的配置。

rtmp {  
    server {  
        listen 8888;   
        application live {  
            live on;  
          }
         }  
}

因为当前只用到了rtmp服务,代码里只配置了rtmp,其他服务没有配置。

配置代码里的8888是监听的端口号。

image.png

修改nginx.conf之后,重启nginx服务:

wbyq@wbyq:~/work_pc/nginx/nginx-1.8.1$ sudo service nginx restart

重启服务之后,使用netstat -ltn命令查看TCP监听的端口,确认下Nginx的监听端口是否正常。

image.png

从上面截图里红线框,框了2个端口,一个是我们自己设置的rtmp服务监听端口8888,还有一个80是Nginx默认的HTTP服务监听端口。

接下来可以在浏览器里输入本机IP地址:http://127.0.0.1/,查看Nginx服务开启状态。

image.png

六、安装FFMPEG测试推流

安装ffmpeg库的方法参考这里:https://blog.csdn.net/xiaolong1126626497/article/details/104919095

使用ffmpeg命令推流本地的摄像头和音频数据到RTMP服务器:

ffmpeg -thread_queue_size 128 -f video4linux2 -r 12 -s 1280x720 -i /dev/video0 -f alsa -i default -ar 44100 -ac 1 -f mp3 -qscale 5 -vcodec libx264 -acodec aac -f flv "rtmp://127.0.0.1:8888/live/xl"

我这里是本地测试,向服务器推流地址就是:rtmp://127.0.0.1:8888/live/xl

其中127.0.0.1是你服务器的IP地址,8888是rtmp监听的端口号,live在配置文件里已经固定,xl可以随便填这是rtmp的临时目录。

image.png

推流之后在linux下可以安装个Mplayer播放器,拉流查看视频。

$ mplayer rtmp://127.0.0.1:8888/live/xl

拉流的地址和推流的地址是一样的。

image.png

如果在云服务上搭建,有公网IP地址,就可以实现远程直播功能了。

通过ffmpeg代码推流编程,可以参考这里:

https://blog.csdn.net/xiaolong1126626497/article/details/105377651

目录
相关文章
|
4月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
9月前
|
安全 Java Linux
Websoft9:为开发者打造的高效 Linux 服务器面板
Websoft9 是一款以开源应用部署与管理为核心的服务器面板,采用“环境即服务”模式。它通过运行环境标准化、自动化配置、安全融合和资源管理四个方面实现平台与环境的深度协同。支持多语言框架预集成、云原生组件整合,提供 200+ 应用模板一键部署,并具备全流程安全防护和统一资源监控能力,助力开发者高效管理和扩展应用环境。
268 0
|
6月前
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
1049 21
|
5月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
556 13
|
5月前
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
1447 0
|
5月前
|
存储 安全 Linux
Linux服务器上安装配置GitLab的步骤。
按照以上步骤,一个基础的GitLab服务应该运行并可以使用。记得定期检查GitLab官方文档,因为GitLab的安装和配置步骤可能随着新版本而变化。
437 0
|
5月前
|
云安全 弹性计算 安全
阿里云服务器安全功能解析:基础防护与云安全产品参考
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题。阿里云服务器除了提供基础的防护之外,还提供了一系列安全防护类云产品,以确保用户云服务器的安全。本文将详细介绍阿里云服务器的基础安全防护有哪些,以及阿里云的一些安全防护类云产品,帮助用户更好地理解和使用阿里云服务器的安全功能。
|
7月前
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
382 24
|
7月前
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。