使用nginx的rtmp模块搭建RTMP和HLS流媒体服务器

489 篇文章 14 订阅
464 篇文章 13 订阅
  • 环境搭建

  • 参数配置

  • 验证结果

前面文章中已经介绍了《使用nginx搭建rtmp流媒体服务器》和《使用nginx搭建HLS服务器》,其实nginx的RTMP模块本身就支持接收RTMP推流、提供RTMP拉流服务及HLS切片器功能,因此可以直接通过nginx的rtmp模块直接接收RTMP推流、对音视频流进行HLS切片,而不需要ffmpeg去生成切片。

1、环境搭建

操作系统操作centos 7版本,有关nginx源码下载、编译和安装过程,参照《使用nginx临时搭建rtmp服务器》文章,这里不做过多介绍

有关nginx的更多文章,请关注公众号壹零仓,发送nginx ,获取

【学习地址】:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

2、参数配置

修改nginx.conf文件,修改后如下

#user  nobody;
worker_processes  1;
​
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
​
#pid        logs/nginx.pid;
​
​
events {
    worker_connections  1024;
}
​
# rtmp配置
rtmp {
        server {
                listen 1935;
                chunk_size 4096;
​
                application live {
                        ##开启RTMP实时流推流和拉流服务,地址格式:rtmp://ip:1935/live/xxx
                        live on;
                        ##开启HLS切片服务
                        hls on;
                        ##HLS切片保存路径
                        hls_path /tmp/hls;
                        record off;
                }
        }
}
​
​
http {
    include       mime.types;
    default_type  application/octet-stream;
​
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
​
    #access_log  logs/access.log  main;
​
    sendfile        on;
    #tcp_nopush     on;
​
    #keepalive_timeout  0;
    keepalive_timeout  65;
​
    #gzip  on;
​
    server {
        listen       80;
        server_name  localhost;
​
        #charset koi8-r;
​
        #access_log  logs/host.access.log  main;
​
        location / {
            root   html;
            index  index.html index.htm;
        }
        #HLS切片文件及索引文件拉取路径
        location /live{
            add_header Access-Control-Allow-Origin *;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            # HLS切片文件目录
            alias /tmp/hls;
            expires -1;
        }
​
        #error_page  404              /404.html;
​
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }     
    }
​
}

这里需要配置RTMP服务相关参数,开启RTMP实时推拉流,开启HLS,配置HLS切片及播放列表索引文件存放路径、切片长度、播放列表长度:

application live {
                        ##开启RTMP实时流推流和拉流服务,地址格式:rtmp://ip:1935/live/xxx
                        live on;
                        ##开启HLS切片服务
                        hls on;
                        ##HLS切片保存路径
                        hls_path /tmp/hls;
                        hls_fragment 4;
                        hls_playlist_length 30;
                        record off;
                }

然后配置HLS协议的HTTP服务,支持播放器拉取播放列表和切片文件:

location /live{
            add_header Access-Control-Allow-Origin *;
            types {
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }
            # HLS切片文件目录
            alias /tmp/hls;
            expires -1;
        }

配置完成后,执行:/home/wangdenuan/nginx/sbin/nginx -s reload,使得配置生效。

3、验证结果

  • 在PC机上安装ffmpeg,具体安装方式可百度

  • 找一个可播放的RTSP地址,通过vlc播放器验证rtsp地址播放是否正常,这里以rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream为例:

  • 打开命令提示行,输入如下ffmpeg命令,推送rtmp视频流到rtmp服务器,这里假设rtmp服务器IP为:10.45.12.29ffmpeg -i rtsp://admin:zxm10@@@@10.45.12.141/h264/ch1/main/av_stream -vcodec copy -acodec copy -f flv rtmp://10.45.12.29:1935/live/testffmpeg推流命令成功后,出现如下图所示界面:

  • 用vlc播放如下串流:rtmp://10.45.12.29:1935/live/test,验证是否rtmp拉流成功:

  • 用VLC播放如下串流:http://10.45.12.29/live/test.m3u8,验证是否hls能够播放成功:

原文链接:使用nginx的rtmp模块搭建RTMP和HLS流媒体服务器

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值