nginx+rtmp实现直播完整流程
一环境准备1.下载nginx-rtmp-module12cd/www/server/git clone https://github.com/arut/nginx-rtmp-module.git2.Nginx安装:这是用了宝塔哈。软件商店 应用搜索nginx 安装 编译安装 添加自定义模块模块名称nginx_rtmp_module描述: nginx rtmp参数–add-module/www/server/nginx-rtmp-module3. 编辑conf配置新建目录/www/server/nginx/conf/rtmp, 在目录下新建两个文件nginx-rtmp.conf和nginx-rtmp-play.conf新建目录/www/tmp/hls用于存放hls视频文件1234567891011121314151617181920212223242526272829303132333435363738# nginx-rtmp.confrtmp {server {listen 1935;ping30s;chunk_size 4000;notify_method get;application live {# 推流地址rtmp://ip:1935/live/密钥同拉流播放地址live on;record off;# 是否开启记录 off, all用于录制直播视频以便回放重播#record_unique on; # 记录值唯一#record_max_size 200M; # 记录文件大小#record_path /www/tmp/video; # 记录文件位置#record_suffix -%Y-%m-%d-%H_%M_%S.flv; # 记录文件命名#on_publish http://127.0.0.1:8686/auth; # 开始推流的回调地址#on_done http://when live stop call this url; # 结束推流的回调地址#on_play http://127.0.0.1:8686/auth; # 开始播放的回调地址}application hls {# 推流地址rtmp://ip:1935/hls/密钥开启HLS协议进行m3u8直播live on;hls on;# 开启hls, hls的推流会产生一个m3u8的ts视频文件索引同时保存一个个视频片段缓存可以拿到再次播放。hls_path/www/tmp/hls;# 视频切片ts文件存放的位置hls_sync 100ms;hls_fragment 5s;# 视频切片的大小ts文件大小hls_cleanup on;#对多余的切片进行删除hls_playlist_length 60s;#保存m3u8列表长度时间默认是30秒}#application vod { # 用于视频点播flv/mp4# play /www/tmp/videos; # 本地视频MP4文件存放地址作为流播放视频: rtmp://ip:1935/vod/视频名称.mp4#}#application vod_http { # 播放远程http链接的视频rtmp://ip:1935/vod_http/视频名称.mp4# play http://localhost:8080/vod/;#}}}12345678910111213141516171819202122232425# nginx-rtmp-play.confserver {listen 1000;location/stat{# http://ip:1000/stat, 监控流的地址rtmp_stat all;rtmp_stat_stylesheet stat.xsl;}location/stat.xsl {root/www/server/nginx-rtmp-module/;}location/hls{# http拉流的地址http://ip:1000/hls/密钥.m3u8# Serve HLS fragmentstypes {application/vnd.apple.mpegurl m3u8;video/mp2tts;}root/www/tmp;expires -1;add_header Cache-Control no-cache;add_header Access-Control-Allow-Origin *;}} 编辑nginx.conf引入配置:include /www/server/nginx/conf/rtmp/nginx-rtmp.conf; 引入配置include /www/server/nginx/conf/rtmp/nginx-rtmp-play.conf;4. 重启Nginx:注意放行端口1935和10005. 使用OBS推流live推流推流地址rtmp://ip:1935/live串流密钥test123浏览器访问http://ip:1000/stat可以看到推流的情况使用PotPlayer拉流播放点击右上角的PotPlayer选择“打开打开链接”输入rtmp://ip:1935/live/test123后点击”确定“。HLS推流推流地址rtmp://ip:1935/hls串流密钥test123使用PotPlayer拉流播放点击右上角的PotPlayer选择“打开打开链接”输入http://ip:1000/hls/test123.m3u8后点击”确定“。6. 扩展浏览器拉流播放html播放器代码index.html使用video.js123456789101112131415161718192021222324!DOCTYPE htmlhtmllangzh-CNheadmetacharsetUTF-8titleHTML5 直播/titlelinkhrefhttps://vjs.zencdn.net/7.0.3/video-js.cssrelexternal nofollowrelstylesheetscriptsrchttps://vjs.zencdn.net/7.0.3/video.js/scriptscriptsrchttps://cdn.jsdelivr.net/npm/videojs-flash2/dist/videojs-flash.min.js/script/headbodystylemargin: auto; width: 1080px;!-- RTMP直播拉流地址 --videoidrtmp-liveclassvideo-js vjs-default-skin vjs-big-play-centeredcontrolspreloadautowidth1080height608data-setup{}sourcesrcrtmp://【IP】/live/test123typertmp/flv/videohr/!-- HTTP直播hls拉流地址 --videoidhls-liveclassvideo-js vjs-default-skin vjs-big-play-centeredcontrolspreloadautowidth1080height608data-setup{}sourcesrchttp://【IP】:1000/hls/test123.m3u8typeapplication/x-mpegURL/video/body/html因为本例的html需要在服务中打开本例采用node, 所以在同一目录下建立server.js:提示不使用node启动服务可以在IDEA中直接将index.html以服务run运行1234567891011121314151617181920212223varhttp require(http);// 导入文件读写的jsvarfs require(fs);varserver http.createServer(function(request, response) {console.log(someone has visited my first node server !);//根据访问的路径来选择响应的文件let filePath;if(request.url /) {filePathindex.html;}else{filePathnotfound.html;}//读取文件并写入响应内容中去fs.readFile(filePath,function(err,data ){response.write(data);//不能直接写data 是16进制的数需要转成字符串//我写data.toString() 会报错response.end();})})server.listen(8000,function() {console.log(server started at http://localhost:8000/ ......)});提示使用Chrome播放rtmp流的时候需要允许Flash执行而使用hls播放m3u8则不用命令安装rtmp模块下载并解压 RTMP 模块12cd/www/server/nginx/src/git clone https://github.com/arut/nginx-rtmp-module.git安装pcre库12sudoapt updatesudoaptinstalllibpcre3 libpcre3-dev123cd/www/server/nginx/src/wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gztar-xzvf pcre-8.43.tar.gz1234cdpcre-8.43./configuremakesudomakeinstall确保 Nginx 配置正确1234567891011121314151617181920212223242526272829cd~/nginx-1.24.0/./configure--userwww --groupwww --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\--with-openssl/www/server/nginx/src/openssl\--with-pcre/www/server/nginx/src/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 \--add-module/www/server/nginx/src/ngx_http_substitutions_filter_module-master\--with-ld-opt-Wl,-E \--with-cc-opt-Wno-error \--with-http_dav_module \--add-module/www/server/nginx/src/nginx-dav-ext-module\--add-module/www/server/nginx/src/nginx-rtmp-module\--with-ld-opt-Wl,-rpath,/usr/local/lib/安装12makemakeinstall检查是否成功在输入下方命令后查找是否安装完成trmp模块1nginx -V如果提示没有找到luajit查看是否安装1luajit -v如果已经安装查找安装目录1whereisluajit根据目录设置环境变量12exportLUAJIT_LIB/usr/local/libexportLUAJIT_INC/usr/local/include/luajit-2.1到此这篇关于nginxrtmp实现直播完整流程的文章就介绍到这了
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2515295.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!