通过OBS+Nginx架设直播系统
- 2023-05-17
- 1655
网上的各种资料都是各种抄,寻找一个有用的知识就好比在垃圾堆里捡破烂,这个直播系统有个很重要的知识点:如果你要把这个流推向抖音那很简单,如果你想在浏览器(包括手机浏览器)里播放视频流,那么就需要理解以下几个技术点:
1、目前OBS+NGINX的直播架构基本都一样,obs采集视频可以直接推流到抖音。
2、为什么要推到Nginx上?是因为Nginx可以进行多点推送(比如:同时推到抖音、B站、浏览器中)。
如果你卡到第二步nginx上了,那这篇文章就是给你准备的,nginx用的基本都是nginx-rtmp插件,这个虽然是一个插件但一般人还真搞不定(一般人不会编译程序,也不会把插件往Nginx里集成),这里第一个窍门就是——下载已经封装好的Nginx-rtmp版本。
假设:nginx的服务器ip是:192.168.1.70,这时候你访问:192.168.1.70应该就会看到nginx的欢迎界面,然后就可以通过obs推流推到这个ip地址上。
【重要知识】上述nginx已经配置好了,正常情况下就可以接受OBS推来的视频流。浏览器已经不支持flash了,nginx处理后的视频流是rtmp,这个格式需要flash解码器才能在浏览器上播放,所以网上有很多人使用了ffmpeg进行了动态转码,然后再发布。这个方法太麻烦,环节一多维护就不方便。其实nginx-rtmp中自带了转码服务,可以将rtmp转码为hls,也就是目前最流行的m3u8。
以下就是我的笔记,你跟着悟性配置吧,如果搞不定欢迎来找我——
1、内容采集:采用OBS程序进行桌面采集,这个软件很成熟就不再赘述。
2、内容推送:
a、内容向抖音、B站等第三方平台推送,需要将抖音或B站的服务器地址和推流码填写到OBS软件中,即可完成推流,但是——
这个服务器地址是个长的动态地址,可能是每个用户一个地址,所以要别人的地址是没用的,除非你想把视频推到对方的账号。
抖音好像是要求有1000个粉丝以后才能进行直播。
B站好像也有相应的要求,但这部分技术含量不好,坊间已经有不少平台支持流转发,0粉丝也能开直播。
b、内容向web进行推送,这个功能主要是将视频流推给网站或手机网站,这时候就有一些技术问题需要了解;
服务器必须使用Nginx,这里面有大神已经封装好的衍生版本:nginx-rtmp,github即可下载。
假设运行nginx的服务器IP为:192.168.1.70
OBS的推流服务器地址,填写你准备部署的服务器地址,例如上面说的:192.167.1.70
剩下就是nginx-rtmp的配置了,完整的配置文件:
worker_processes 1; error_log logs/error.log info; events { worker_connections 1024; } #接收推流 rtmp { #每个直播服务可以开启多个应用(application),比如这组直播就开启了和live和hls server { listen 1935; #live:RTMP 推流的入口点 application live { live on; } #hls:转码的入口点 application hls { live on; hls on; hls_path d:\site\v; #转码后的m3u8和ts片段存储的位置,后期通过http服务将本目录发布即可 hls_fragment 3s; } } } #对外发布 http { #mime设置 types { text/html html htm shtml; text/css css; text/xml xml; application/javascript js; application/json json; application/font-woff woff; application/vnd.ms-fontobject eot; application/x-font-ttf ttf; image/svg+xml svg; image/x-icon ico; image/gif gif; image/png png; image/jpeg jpeg jpg; video/mp4 mp4; video/x-msvideo avi; video/mp2t ts; application/vnd.apple.mpegurl m3u8; } # 允许跨域访问的域名和端口,* 表示允许所有来源 add_header Access-Control-Allow-Origin *; # 允许跨域访问的 HTTP 方法 add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; # 允许跨域访问的请求头 add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; # 响应头的缓存时间,单位为秒 add_header Access-Control-Max-Age 3600; #将m3u8和ts视频通过http协议发布出去 server { listen 8080; server_name localhost; location / { root d:\site; } } }
本博客所有内容均为原创,原则上我不希望你转载。如特别喜欢而转载的话,请务必注明出处“网际飞扬 http://www.fayo.net”
否则本人闲来无事可能会把你误当成维权的靶子。
评论
全部评论
共{{commentCount}}条{{rs.Msg_Content}}