当前位置:   article > 正文

Linux环境傻瓜式nginx+rtmp+ffmpeg套餐安装详解(获取拉流人数)_nginx-rtmp-module下载

nginx-rtmp-module下载

点击下载《Linux环境傻瓜式nginx+rtmp+ffmpeg套餐安装详解(获取拉流人数)》

点击下载《Java 使用javaCV、ffmpeg拉流H265 RTSP转推H264 RTMP可获取流访问人数(源代码)》

1. 下载nginx-rtmp-module

  1. 进入下载地址:https://github.com/arut/nginx-rtmp-module,并下载压缩包,如下图所示:

1、下载完成后,在windows系统下解压,然后将解压后的文件夹上传到linux系统下,我把它放在/root/soft-install/nginx,如下图:

2. 安装nginx

1、下载地址:http://nginx.org/en/download.html,选择需要的版本下载即可,如下图:

2、这里我下载的是nginx-1.16.1,下载后上传到Linux系统目录,我把它放在/root/soft-install/nginx,如下图:

3、在安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel,运行命令:yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel,结果如下图所示:

4、进入/root/soft-install/nginx目录,并解压,依次执行命令为:

cd /root/soft-install/nginx

tar -xvf nginx-1.16.1.tar.gz

5、编译安装nginx,并指定上面下载的rtmp模块路径,命令为:

(1)安装依赖包,依次执行以下两条命令:

yum -y install libxml2 libxml2-dev
yum -y install libxslt-devel

如果出现:Cannot prepare internal mirrorlist: No URLs in mirrorlist

则依次执行以下两条命令:

sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*

sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*

(2)编译安装nginx,并指定上面下载的rtmp模块路径,执行命令:

./configure --add-module=../nginx-rtmp-module-master --with-http_ssl_module --with-http_ssl_module --with-http_xslt_module --with-http_flv_module --with-debug --with-http_gzip_static_module

执行成功如下图所示:

6、运行cd conf,进入nginx配置文件目录,修改nginx.conf文件,共需要添加两处配置,

(1)第一步在文件末尾加上下面配置信息:

  1. #文件末尾追加
  2. rtmp {
  3. server {
  4. listen 1935; #监听的端口
  5. chunk_size 4000;
  6. # rtmp推流请求路径
  7. application hls {
  8. live on;
  9. hls on;
  10. hls_path /usr/tmp/hls;
  11. hls_fragment 10s;
  12. }
  13. }
  14. }

(2)在http->server节点下增加推流目录的访问权限配置:

  1. location /hls {
  2. alias /usr/tmp/hls; #该目录对应rtmp 配置中的hls_path即可
  3. autoindex on; # 开启目录文件列表
  4. autoindex_exact_size on; # 显示出文件的确切大小,单位是bytes
  5. autoindex_localtime on; # 显示的文件时间为文件的服务器时间
  6. charset utf-8,gbk; # 避免中文乱码
  7. }

7、执行命令:cd .. && make && make install,执行成功如下图所示:

8、执行命令:cd /usr/local/nginx跳转至nginx的安装目录,然后执行命令:./sbin/nginx -t测试配置文件是否有问题,如下图所示:

9、执行命令:./sbin/nginx,启动nginx,执行该命令无错误显示的话默认是没有任何信息显示的,如下图:

10、在浏览器中输入linux的ip地址检查nginx启动页面是否可访问,正常访问成功如下图所示:

2.1 nginx无法访问页面问题解决方法:

1、执行命令:ps -ef | grep nginx,查看nginx是否成功运行了,如下图所示:

2、运行命令:lsof -i:80(或者netstat -lnt | grep 80)检查nginx是否已启动监听端口(nginx默认端口为80,如果你自己想改成其他的,则检查端口时相应的更改),正常情况如下图所示:

3、执行命令:firewall-cmd --add-port=80/tcp --permanent将80端口加入防火墙(nginx默认端口为80,如果你自己想改成其他的,则添加端口时相应的更改),然后执行命令:systemctl restart firewalld重启防火墙,如下图所示:

4、查看nginx的端口方法,执行命令:cd /usr/local/nginx/conf/,打开nginx.conf,nginx端口配置位置如下图所示:

5、按照以上步骤做完,你的nginx应该也已经启动了,如果没有启动,那就全部重新来过。

2.2 配置查询流拉取人数(可选)

1、在nginx配置中增加如下配置:放在http->server节点下

  1. location /stat {
  2.                 rtmp_stat all;
  3.                 allow 127.0.0.1;
  4.         }
  5.         
  6.         location /nclients {  
  7.             proxy_pass http://127.0.0.1/stat;  
  8.             xslt_stylesheet /usr/local/nginx/html/nclients.xsl app='$arg_app' name='$arg_name';  
  9.             #add_header Refresh "3; $request_uri";  
  10.         }

2、在/usr/local/nginx/html/目录下新建文件nclients.xsl,并录入以下内容:

  1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  2. <xsl:output method="html"/>
  3. <xsl:param name="app"/>
  4. <xsl:param name="name"/>
  5. <xsl:template match="/">
  6. <xsl:value-of select="count(//application[name=$app]/live/stream[name=$name]/client[not(publishing) and flashver])"/>
  7. </xsl:template>
  8. </xsl:stylesheet>

3、重启nginx。

4、在ffmpeg安装成功后,并进行推流,然后再网页中输入地址:

说明:

application下的name(即hls)指的是应用名称,对应nginx配置的rtmp中的hls

stream下的name(即3a0f53c551d946b6b48b9a54c2509b07)指的是推流名称

client节点信息即当前拉流的客户端信息

5、完整的nginx配置文件nginx.conf内容如下:

  1. #user nobody;
  2. worker_processes 1;
  3. #error_log logs/error.log;
  4. #error_log logs/error.log notice;
  5. #error_log logs/error.log info;
  6. #pid logs/nginx.pid;
  7. events {
  8. worker_connections 1024;
  9. }
  10. http {
  11. include mime.types;
  12. default_type application/octet-stream;
  13. sendfile on;
  14. #tcp_nopush on;
  15. #keepalive_timeout 0;
  16. keepalive_timeout 65;
  17. #gzip on;
  18. server {
  19. listen 80;
  20. server_name localhost;
  21. #charset koi8-r;
  22. #access_log logs/host.access.log main;
  23. location / {
  24. root html;
  25. index index.html index.htm;
  26. }
  27. location /hls {
  28. alias html/hls;
  29. index index.html index.htm;
  30. if ($request_method = 'OPTIONS') {
  31. add_header 'Access-Control-Allow-Origin' '*';
  32. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  33. #
  34. # Custom headers and headers various browsers *should* be OK with but aren't
  35. #
  36. add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
  37. #
  38. # Tell client that this pre-flight info is valid for 20 days
  39. #
  40. add_header 'Access-Control-Max-Age' 1728000;
  41. add_header 'Content-Type' 'text/plain; charset=utf-8';
  42. add_header 'Content-Length' 0;
  43. return 200;
  44. }
  45. if ($request_method = 'POST') {
  46. add_header 'Access-Control-Allow-Origin' '*';
  47. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  48. add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
  49. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  50. }
  51. if ($request_method = 'GET') {
  52. add_header 'Access-Control-Allow-Origin' '*';
  53. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  54. add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
  55. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  56. }
  57. }
  58. location /stat {
  59. rtmp_stat all;
  60. allow 127.0.0.1;
  61. }
  62. location /nclients {
  63. proxy_pass http://127.0.0.1/stat;
  64. xslt_stylesheet /usr/local/nginx/html/nclients.xsl app='$arg_app' name='$arg_name';
  65. #add_header Refresh "3; $request_uri";
  66. }
  67. error_page 500 502 503 504 /50x.html;
  68. location = /50x.html {
  69. root html;
  70. }
  71. }
  72. server
  73. {
  74. listen 9999;
  75. add_header Access-Control-Allow-Origin *;
  76. #HLS配置开始,这个配置为了客户端能够以http协议获取HLS的拉流
  77. location /hls {
  78. add_header Access-Control-Allow-Origin *;
  79. types {
  80. application/vnd.apple.mpegurl m3u8;
  81. video/mp2t ts;
  82. }
  83. alias html/hls; #跟上面的hls_path路径对应
  84. expires -1;
  85. if ($request_method = 'OPTIONS') {
  86. add_header 'Access-Control-Allow-Origin' '*';
  87. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  88. #
  89. # Custom headers and headers various browsers *should* be OK with but aren't
  90. #
  91. add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
  92. #
  93. # Tell client that this pre-flight info is valid for 20 days
  94. #
  95. add_header 'Access-Control-Max-Age' 1728000;
  96. add_header 'Content-Type' 'text/plain; charset=utf-8';
  97. add_header 'Content-Length' 0;
  98. return 200;
  99. }
  100. if ($request_method = 'POST') {
  101. add_header 'Access-Control-Allow-Origin' '*';
  102. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  103. add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
  104. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  105. }
  106. if ($request_method = 'GET') {
  107. add_header 'Access-Control-Allow-Origin' '*';
  108. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  109. add_header 'Access-Control-Allow-Headers' 'Origin, X-Requested-With, Content-Type, Accept, Authorization';
  110. add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
  111. }
  112. }
  113. }
  114. }
  115. rtmp {
  116. server {
  117. listen 1935; #监听的端口
  118. chunk_size 4000;
  119. # rtmp推流请求路径
  120. application hls {
  121. live on;
  122. hls on;
  123. hls_path /usr/local/nginx/html/hls;
  124. hls_fragment 10s;
  125. hls_playlist_length 300;
  126. }
  127. }
  128. }

3. 安装ffmpeg

1、打开官网地址,进入下载页:https://ffmpeg.org/download.html#build-linux,如下图所示:

2、点击跳转后,点击最新版本进行下载(这里下载的是免安装版,一般情况已够用),如下图所示:

3、官网下载贼慢,慢慢等吧。

4、下载完,将下载后的文件上传到linux目录下,执行解压命令:

tar -xvf ffmpeg-release-amd64-static.tar.xz,如下图所示:

5、解压完后,进入到解压后的目录,可以看到已经有ffmpeg执行文件了,如下图所示:

6、执行推流命令,试试看推流效果吧,ffmpeg命令请自行上网查,我推送的为ffmpeg目录下的一个mp4文件,命令为:./ffmpeg -i 1.mp4 -f flv rtmp://192.168.2.246:1935/hls/001,执行结果如下图所示:

7、使用vlc播放器打开推流地址进行查看推流视频,如下图所示:

 点击下载《Linux环境傻瓜式nginx+rtmp+ffmpeg套餐安装详解(获取拉流人数)》

点击下载《Java 使用javaCV、ffmpeg拉流H265 RTSP转推H264 RTMP可获取流访问人数(源代码)》

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/195973
推荐阅读
相关标签
  

闽ICP备14008679号