Nginx的RTMP直播模块开发参数说明和配置范例

现在直播也是非常流行的一种应用场景,各种应用和H5页面上也经常用到直播。目前直播技术以RTMP方式是非常成熟的,虽然有10秒左右的延迟。但是这完全不影响直播的效果和稳定性。这次我们就以Nginx下的RTMP直播模块来讲一下直播的应用级别开发。安装这种类型的RTMP模块,需要重新编译NGINX服务。并且下载RTMP安装包。这里的安装和编译在另一篇牛人技术文章中说过了,在此就不多介绍了。下面我们来说说RTMP模块的一些命令参数和配置方法。

一;直播RTMP模块中一些主要的配置选项
rtmp
server  NGINX中的服务块
listen  监听端口
application  用于在NGINX配置文件中创建同一个程序块
timeout  连接过期时间
ping  测试数据包
ping_timeout  测试数据包超时时间
max_streams  最大流数量
ack_window
chunk_size
max_queue
max_message
buflen
out_queue
out_cork
二;在直播时的一些配置项

live
meta
interleave
wait_key
wait_video
publish_notify
drop_idle_publisher
sync
play_restart
idle_streams

三;HLS协议进行m3u8实时直播
hls
hls_path
hls_fragment
hls_playlist_length
hls_sync
hls_continuous
hls_nested
hls_base_url
hls_cleanup
hls_fragment_naming
hls_fragment_naming_granularity
hls_fragment_slicing
hls_variant
hls_type
hls_keys
hls_key_path
hls_key_url
hls_fragments_per_key

四;录制直播视频以便回放重播
record
record_path
record_suffix
record_unique
record_append
record_lock
record_max_size
record_max_frames
record_interval
recorder
record_notify

五;使用HTTP动态自适应不同带宽的视频
dash
dash_path
dash_fragment
dash_playlist_length
dash_nested
dash_cleanup
MPEG-DASH

六;用于视频点播的配置
play
play_temp_path
play_local_path

七;拉流转播到其他平台
pull
push
push_reconnect
session_relay

八;直播状态的消息和状态
on_connect
on_play
on_publish
on_done
on_play_done
on_publish_done
on_record_done
on_update
notify_update_timeout
notify_update_strict
notify_relay_redirect
notify_method

九;对直播的访问权限控制
allow
deny
Exec 一簇函数(进程往往要调用一种exec函数以执行另一个程序)
exec_push
exec_pull
exec
exec_options
exec_static
exec_kill_signal
respawn
respawn_timeout
exec_publish
exec_play
exec_play_done
exec_publish_done
exec_record_done

十;其他RTMP的配置选项
access_log  访问日志
log_format
max_connections  连接数Limits 限制
rtmp_stat  数据统计
rtmp_stat_stylesheet
Multi-worker live streaming    多线程直播流
rtmp_auto_push
rtmp_auto_push_reconnect
rtmp_socket_dir
rtmp_control  直播Control 控制模块

十一;下面是一个NGINX-RTMP直播配置的范例
worker_processes  1;

events {
    worker_connections  1024;
}

#这里开始是牛人技术测试直播的配置信息
rtmp {
server {
listen 1935;
chunk_size 4096;
application hls {
live on;
hls on;
hls_path /byDATA/NginxRtmpNRJS/webroot/tt/hls;
hls_fragment 5s;
}

#用来给115频道
application ANuid115 {
live on;
hls on;
hls_path /byDATA/NginxRtmp/webroot/ANuid115;
hls_fragment 5s;
}

#用来测试
application ANuid901 {
live on;
hls on;#实时回访
wait_key on;#保护TS切片
hls_nested on;#每个流都自动创建一个文件夹
hls_fragment 5s;#每个ts文件为5s的样子
hls_fragment_naming system;#使用系统时间戳命名ts文件
hls_playlist_length 10800s;#保存m3u8列表长度时间,默认是30秒,可考虑三小时10800秒
hls_cleanup on;#是否删除列表中已经没有的媒体块TS文件,默认是开启
hls_continuous on;#连续模式
hls_path /byDATA/NginxRtmp/webroot/live/record/ANuid901;#媒体块ts的位置
}

application ANuid902 {
live on;
hls on;
hls_path /byDATA/NginxRtmp/webroot/tt/ANuid902;
hls_fragment 5s;
}

application ANuid903 {
live on;
hls on;
hls_path /byDATA/NginxRtmp/webroot/tt/ANuid903;
hls_fragment 5s;
}
}
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;

#byAdd
#include /byDATA/NginxRtmp/conf/*.conf; 此处可以添加自定义配置文件目录
    #gzip  on;
    server {
        listen       80;
        server_name  localhost;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;
        location / {
#byAdd
#root   /byDATA/NginxRtmp/webroot/tt;
            root   html;
            index  index.html index.htm;
        }
        #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;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
#byAdd
server {
        listen       80;
        server_name  flow.320023.com;
location /ANuid901 {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /byDATA/NginxRtmp/webroot/live/record;
add_header Cache-Control no-cache;
        }
#推流状态查看 http://flow.320023.com/stat
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl { 
root /byDATA/NginxRtmp/Program/nginx-rtmp-module-master/;
}

#rewrite /ANuid901/(.*).m3u8$ /ANuid901/$1/index.m3u8 last;#重写用于兼容阿里云m3u8命名格式
#rewrite /ANuid901/(.*).ts$ /ANuid901/StreamName/$1.ts last;#重写让上面m3u8能找到ts文件
    }
    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;
    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;
    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
}

RTMP直播配置总结
总体来说NGINX进行直播服务的配置,和编译不算特别难。只是在编译环境和配置选项上有需要注意点,如果在此过程中有任何问题欢迎随时到牛人技术博客Q群90095842一起交流。

(0)

相关推荐

  • 音视频开发——通信直播协议和视频推流丨RTMP-RTSP

    近年来直播已成为互联网行业的大热话题,直播答题.游戏直播.竞赛直播,抖音直播,直播教育等层出不穷,直播早已成为人们耳熟能详的技术.事实上直播的兴起不仅与新时代人们要求为自己代言的心理有关,同时也得益于 ...

  • 深入理解Nginx模块开发与架构解析

    一.研究Nginx前的准备工作 1.Nginx特点:更快.高扩展性.高可靠性.低内存消耗.单机支持10万以上的并发连接.热部署.最自由的BSD许可协议 2.退出nginx nginx -s stop ...

  • 【Linux网络编程】Nginx -- 模块开发(基本模块解析)

    [1]处理流程图示 Nginx 一次常规的请求和响应的处理流程 典型的 HTTP 模块在 Nginx 中调用的简化流程 [2]模块开发示例 [2.1]将模块编译进入 Nginx 将模块源代码文件放到一 ...

  • 网页即时聊天源码,直播系统开发,直播平台搭建的二三事儿

    目前直播的应用场景已经无法估量,游戏.户外.赛事.新闻发布会等,场景的增多代表更多的需求,直播平台源代码的需求量增多,也使整个直播行业保持着受欢迎的热度. 但随着用户红利的逐渐减退,内容垂直化或将成为 ...

  • 直播平台开发,开发时一定具备的条件有哪些

    直播平台开发的热度不言而喻,这也让开发团队吃到了直播平台开发的红利,面对开发团队的增多,直播开发的行业逐渐饱和,很多不具备条件的开发团队被淘汰,如果想要找一个实力强大的开发团队,有哪些必须具备的条件呢 ...

  • 直播APP开发中个人信息及财产安全问题不可忽视

    移动直播系统已经占据了我们生活中更多的碎片化时间,有时午饭后.睡觉或者如厕时都有直播间陪着我们,而且直播APP开发行业涉及到的领域广泛,如直播办公会议.直播购物系统.直播教育系统等等,伴随着移动互联网 ...

  • 网络视频直播系统,直播系统开发团队的选择标准有哪些

    网络视频直播系统需要开发团队的技术支持和开发才能实现各项功能的使用,对想要开发进行网络视频直播系统开发的客户来说,是不可省去的必要步骤.一般客户在寻找开发团队时除了关注价格问题和是否支持二次开发外,还 ...

  • 直播间系统创建,直播间开发的页面搭建

    直播虽不是中国的首创,但是现在的直播模式却是由中国带热.直播系统的开发搭建,如今已经是人尽皆知的热门行业,并且中国直播平台早已达到1-200个. 直播间系统创建的具体操作步骤如下: 第一步:创建. 点 ...

  • 直播间礼物机制,已成为直播源代码开发中占比最重的功能

    "感谢小哥哥送来的飞机,感谢老铁送来的涂鸦"--不管是主播也好,用户也好,对这些话一定都很熟悉,都对直播源代码的礼物机制非常感兴趣,这也成为了直播APP的一个标签,所以说直播源代码 ...

  • 一对一直播系统开发需要具备的具体功能

    一.礼物丰富.种类多一对一主播也有礼物收益,礼物种类就十分丰富,有很多类型可以选择.在一对一视频过程中,观众也可以送礼物给自己喜欢的主播,加深双方感情联系. 二.自由私密的聊天.用户可在主播个人主页发 ...