zoukankan      html  css  js  c++  java
  • 教你如何搭建自己的直播服务器简易

    使用背景:   

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

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

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

    安装和配置:

      安装:

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

      配置:

     然后打开\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。运行后打开任务管理器的进程看一下是否启动成功。

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

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

    1,检查配置

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

    2,启动程序

    接着我们运行启动命令。

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

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

     推流

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

    拉流

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

    rtmp地址:

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

    http地址:

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

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

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

     保存录像

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

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

    
    
    从前慢,车马慢。 一生只爱一个人。
  • 相关阅读:
    MySQL正则表达式 REGEXP详解
    INSERT DELAYED 句法
    mysql查询语句分析 explain用法
    mysql导出导入
    sf04_操作系统中 heap 和 stack 的区别
    2.4 Rust Ownership
    2.1 GO 变量定义
    1.3 IDAE 中使用GO开发项目
    my30_表碎片整理
    my29_PXC集群状态查看
  • 原文地址:https://www.cnblogs.com/BFMC/p/15624417.html
Copyright © 2011-2022 走看看