宝塔nginx搭建rtmp推流服务器

道锋潜鳞
2021-01-09 / 1 评论 / 115 阅读 / 正在检测是否收录...

环境Linux centos 7.6 + Nginx

1.安装Nginx

这一步就不用多说了吧

我是宝塔用户,这边进入到/www/server/nginx/src目录里面

使用nginx -V查看当前的编译选项。

2.安装Nginx的rtmp拓展

nginx的rtmp拓展包github地址:https://github.com/arut/nginx-rtmp-module,可以使用git clone下拉或者直接下载

我这边直接下载解压放到:/root下。

Nginx安装rtmp拓展:

3.编译

在刚刚-V操作所输出的 ./configure arguents:之后的内容复制

然后在后头添加:

--add-module=/opt/module/nginx-rtmp-module

在前头添加

./configure

如:(我这里有编译云锁的安全模块,可以删除)

./configure --user=www --group=www --prefix=/www/server/nginx --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --with-openssl=/www/server/nginx/src/openssl --with-pcre=pcre-8.43 --with-http_v2_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_stub_status_module --with-http_ssl_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-cc-opt=-Wno-error --with-ld-opt=-ljemalloc --with-http_dav_module --add-module=/www/server/nginx/src/nginx-dav-ext-module --add-module=/root/nginx-plugin-master --add-module=/root/nginx-rtmp-module

运行后没有错误的话执行

 make -j8  (我这里是8个线程编译,可以根据具体机器的配置选配)

make完成后将系统中原有的nginx用重新编译生成的nginx文件替换,替换后重启nginx使新编译nginx生效

rm -rf /www/server/nginx/sbin/nginx
cp objs/nginx /www/server/nginx/sbin/
service nginx restart

4.配置Nginx的rtmp服务站点

# 在文件底部添加下面内容:
rtmp {    
      server {        
              listen 1935; #监听的端口         
              chunk_size 4000;        
              application tv_file {            
                                   live on; #开启实时            
                                   hls on; #开启hls            
                                   hls_path /www/hls; 
                                   #rtmp推流请求路径,文件存放路径 
                                   hls_fragment 5s; 
                                   #每个TS文件包含5秒的视频内容       
              }    
      }
}

另外切记,此段配置文件需要和http配置块同级,即不能将此段内容放在http{}内,否则无法启动且报错

重启Nginx:

nginx -s reload

开放端口(没防火墙忽略此部)

iptables -I INPUT -p tcp --dport 1938 -j ACCEPT

附属步骤1:使用http-hls流(m3u8)(不需要此功能跳过这步)

首先新建一个站点,在配置文件中添加类似这样的代码:

add_header 'Access-Control-Allow-Origin' *;
add_header 'Access-Control-Allow-Methods' GET;
location /live {
#error_page 404 =200 /nosign.m3u8;
#可以取消注释上面的代码,稍作修改即可配置默认视频流
 types {
      application/vnd.apple.mpegurl m3u8;
      video/mp2t ts;
  }
  alias /www/hls/;
}

这段配置文件将前一步生成的m3u8和ts文件以http的形式推送。

可以再添加CDN进行分发,但注意缓存时间需要匹配,否则会出现视频流异常。

附属步骤2:读取http-hls流(m3u8)(不需要此功能跳过这步)

完成上面附属一之后,可以使用如下html代码读取播放此m3u8视频源

<script src="https://www.silverdragon.cn/wp-content/themes/hestia/assets/js/hls.min.js"></script>
<video id="video" class="wrap" controls="" poster="封面图片"></video>
<script>
var url = "你的hls地址";
  if(Hls.isSupported()) {
    var video = document.getElementById('video');
    var hls = new Hls();
    hls.loadSource(url);
    hls.attachMedia(video);
    hls.on(Hls.Events.MANIFEST_PARSED,function() {
      video.play();
  });
 }
</script>

5、推拉流测试

推流。下载OBS Studio,官网下载太慢了,其他下载地址:https://pc.qq.com/detail/4/detail_23604.html

安装完成,打开软件,在控件版块点击设置,左边的导航选择流,然后流类型选择自定义流媒体服务器,url输入rtmp://你的IP:1935/tv_file(就是刚刚配置的那个),流名称随便设置一个

在场景里头随便添加个视频或者什么七七八八的

设置完成点击推流。

在服务器就看到m3u8文件的生成,推流成功。(然后挂到后台)

这边强烈建议调整为动态码率或者其他什么的,毕竟自己的服务器带宽小,一不小心就跑满了

6、拉流。测试拉流

下载VLC,官方也是慢的要死,可以普通下载:https://pc.qq.com/detail/9/detail_569.html

安装后打开

url输入rtmp://你的IP:1935/tv_file/流名称(秘钥)或者使用刚刚配置的hls流,输入http://你的域名或IP/live/流名称.m3u8

拉取正常

根据本教程可以做出类似本站https://www.silverdragon.cn/?page_id=2339的功能。

0

评论 (1)

取消
  1. 头像
    龙介
    Windows 10 · QQ Browser

    好耶!

    回复