网际飞扬

还记得年少时的梦么,醒不过来 便信以为真……

主题背景
本网站首发版本创建于1999年4月
网际飞扬
手机网站二维码

请使用手机扫描二维码,登录网站手机版。

通过OBS+Nginx架设直播系统

  • 2023-05-17
  • 1500

网上的各种资料都是各种抄,寻找一个有用的知识就好比在垃圾堆里捡破烂,这个直播系统有个很重要的知识点:如果你要把这个流推向抖音那很简单,如果你想在浏览器(包括手机浏览器)里播放视频流,那么就需要理解以下几个技术点:

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}}条
  • {{i+1}}楼
    {{rs.Msg_Sender}}{{rs.Msg_Datetime}}

    {{rs.Msg_Content}}

播放器封面
  • 宠物精灵