教你如何搭建自己的直播服务器-简易

教你如何搭建自己的直播服务器-简易使用背景:在项目中有没有遇见过要对接直播接口的需求?我想大家都是有的。但是怎么说呢,对接第三方的缺点也很明显,除去那不可避免的一些事故。最大的缺点就是要钱!!!要钱!!!要钱!!!对于我们公司来说

大家好,又见面了,我是你们的朋友全栈君。

使用背景:   

 在项目中有没有遇见过要对接直播接口的需求?我想大家都是有的。但是怎么说呢,对接第三方的缺点也很明显,除去那不可避免的一些事故。最大的缺点就是要钱!!!要钱!!!要钱!!!

对于我们公司来说。一般都是要先上线,在考虑效率。所以经过我不断地查询资料找到了一款可以搭建直播服务器的工具 。就是他 nginx.exe 

    下面直接开撸!首先放一下官网地址:http://nginx.org/en/download.html

安装和配置:

  安装:

    博主用的是window系统,其它系统…请绕路(参考别的文献)。下载,安装之后需要增加几个文件夹如图:

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

  配置:

 然后打开\conf\下的nginx.conf  按照下面进行配置

worker_processes  1;   #Nginx进程数,建议设置为等于CPU总核数
 
events {
    worker_connections  1024;  #工作模式与连接数上限
}
 
rtmp_auto_push on;
 
 
#RTMP服务
rtmp{
    server{
        listen 1935;        #服务端口
        chunk_size 4096;    #数据传输块的大小
        
        application vod{
            play ./vod;   #视频文件存放位置
        }
        application live{
            live on;                     #开启直播
            
            #开启录制功能,会将直播的信息保存成一个flv文件
            record all;
            #视频录制存放目录,注意 因为需要生成文件,所以需要nginx以某种可以让其他服务读写文件的用户权限启动
            record_path D:\zbvideo;
            #每次录制是否唯一文件名,会以 房间号-时间戳 为名称,房间号由推流端指定,跟在 live后面,如 live/room1
            record_unique on;
            #将直播录制的视频转为mp4格式,主要为FFmpeg指令的使用,未验证
            #exec_record_done 为录制完成后执行的指令
            exec_record_done ffmpeg -y -i $path -acodec libmp3lame -ar 44100 -ac 1 -vcodec libx264 $path/$basename.mp4;
            
            
            hls on;                      #开启hls直播。这个参数把直播服务器改造成实时回放服务器
            #wait_key on;                #对视频切片进行保护,这样就不会产生马赛克了
            hls_path ./m3u8File;         #切片视频文件存放位置(HLS,m3u8文件存放位置)
            hls_fragment 2s;             #每个视频切片的时长
            hls_playlist_length 16s;
            recorder myRecord{
                record all manual;
                record_suffix _.flv;
                record_path ./rec;
            }
            #hls_continuous on;          #连续模式
            #hls_cleanup on;             #对多余的切片进行删除
            #hls_nested on;              #嵌套模式
        }
    }
}

 
 
#HTTP服务
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
 
    server {
        listen       80;
        server_name  localhost;
 
        location / {
            root   html;
            index  index.html index.htm;
        }
 
        location /live_hls{
            types{
                #m3u8 type设置
                application/vnd.apple.mpegurl m3u8;
                #ts分片文件设置
                video/mp2t ts;
            }
            #指向访问m3u8文件目录
            alias ./m3u8File;
                add_header Cache-Control no-cache; #禁止缓存
                add_header Access-Control-Allow-Origin *; #允许所有域名跨域访问代理地址
                add_header Access-Control-Allow-Headers X-Requested-With;
                add_header Access-Control-Allow-Methods GET; #跨域请求访问请求方式,
        }
 
        location /control{
            rtmp_control all;
        }
        
        location /stat{
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl{
            root ./nginx-rtmp-module-master;
        }
 

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

 

 

运行:

然后我们进行运行直播服务器,怎么运行呢。可以直接使用管理员身份运行nginx.exe。运行后打开任务管理器的进程看一下是否启动成功。

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

 

这里推荐使用cmd进行启动程序,因为nginx给我们提供了很多命令可以更好地使用。

nginx命令:
nginx.exe -t   检查配置是否正确
start nginx     启动
nginx -s stop  立即停止服务
systemctl restart nginx.service   重启Nginx服务
netstat -tlnp   查看端口号

 

1,检查配置

首先我们打开cmd命令,然后抵达所在文件夹。安装后建议先用上面的检查配置的命令看一下是否ok,配置无问题则会返回以下内容。

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

 

2,启动程序

接着我们运行启动命令。

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

 回车之后我们就可以打开任务管理器看到进程是已经开启了。

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

然后打开游览器地址栏中输入localhost:80,出现下面图片内容代表没有问题。

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

 推流

 下一步我们进行obs推流 推流后可以让其他端口进行拉流播放;

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

拉流

 拉流的话这里提供两种方式

rtmp地址:

第一种直接原地址rtmp:进行拉流。

http地址:

另外一种是推荐的http:进行拉流 格式如下:http://localhost:80/live_hls/1441970998831222784.m3u8

 

可以看到访问直播流是没有问题的~ 

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

 

然后文件夹中也出现了我们推流的一些m3u8.文件。

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

 

 保存录像

非常感谢看到这里,最后这个是已经进行保存录像的配置了。具体实现是在配置文件中的record_path 这里进行自定义文件夹保存。

可以看到这里是flv的视频媒体。

<span role="heading" aria-level="2">教你如何搭建自己的直播服务器-简易

 

 


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154600.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • [设计模式]委派模式「建议收藏」

    github地址:https://github.com/1711680493点我进入github如需了解更多设计模式,请进入我的设计模式专栏委派模式委派模式不是23设计模式中的一种.与策略模式很相似.拥有以下三种角色抽象任务角色 委派者角色 具体任务角色委派模式,就是将任务发给委派者角色,委派者角色去委派具体任务角色委派模式对外隐藏了具体实现,仅将委派者角色暴露给外部委派模式和策略模式不同的是,委派者角色和具体任务角色都要继承/实现抽象任务角色Spring框架很

    2022年4月16日
    43
  • PAT考试经验总结(甲乙级均适用)~~想满分的请看这里!~~

    PAT考试经验总结(甲乙级均适用)~~想满分的请看这里!~~emmmmmmm总算是考了个满分,不用以后再交PAT考场一日游入场费了T^T第一次在去年秋天,被第一题狼人杀给干掉了〒▽〒,最后得了81分,第二次就是今年春季,侥幸满分通过了==为了总结自己踩过的坑,给后面要考的同学们提供一些微薄的帮助,遂作此文。考场经验一.注意,考试的运行时的黑框,是不能使用Crtl+V进行粘贴的,但这不代表考试不能进行复制粘贴,PAT考试系统里的代码…

    2022年4月29日
    63
  • Failed to find Platform SDK with path: platforms;android-30「建议收藏」

    Failed to find Platform SDK with path: platforms;android-30「建议收藏」在运行的时候出现这个错误,版本的要求不一样点上对勾,直接apply就可以了

    2022年5月11日
    41
  • 超分辨率-RDN[通俗易懂]

    超分辨率-RDN[通俗易懂]一、简介RDN——ResidualDenseNetwork——残差深度网络RDN是基于深度学习的超分方法之一二、结构RDN网络结构分为4个部分:1、SFENet(ShallowFeatureExtractionNet,浅层特征提取网络)2、RDBs(ResidualDenseBlocks,残差稠密块)3、DFF(DenseFeatureFusion,稠密特…

    2022年6月18日
    54
  • python各种库的安装_ad常用软件库

    python各种库的安装_ad常用软件库方法一:需要在网络条件下安装win+R进入运行框输入命令cmd点击确定进入普通下载:pipinstall模块名字例如:输入pipinstallpygamepipinstallnumpypipinstallxlwt—–xlwt代表需要安装所需包和库等列出安装版本:piplist和pipfreeze卸载模块:pipuninstallxlwtY–确定卸载,n–否指定版本下载:pipinstall…

    2022年10月2日
    3
  • Eureka面试题_多线程编程面试题

    Eureka面试题_多线程编程面试题点击关注我的博客原文Eureka是Netflix组件的一个子模块,也是核心模块之一。云端服务发现,一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移(来源springcloud中文网的介绍:https://www.springcloud.cc/)。下图总结了Eureka服务端(以下简称服务端)与Eureka客户端(以下简称客户端)之间协同工作的流程:流程说明:…

    2022年8月21日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号