通过OBS+Nginx架设直播系统
- 2023-05-17
- 1764
网上的各种资料都是各种抄,寻找一个有用的知识就好比在垃圾堆里捡破烂,这个直播系统有个很重要的知识点:如果你要把这个流推向抖音那很简单,如果你想在浏览器(包括手机浏览器)里播放视频流,那么就需要理解以下几个技术点:
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}}