美文网首页ijkplayer秘籍
网络直播/点播服务器搭建

网络直播/点播服务器搭建

作者: Weller0 | 来源:发表于2018-05-25 15:22 被阅读344次

    网络直播好火,自己来搭建个服务器玩一玩儿
    我用虚拟机搭建的服务器,装的最新的Ubuntu18.04,由于要在局域网内访问,需要设置虚拟机的网络为桥接适配器(相当于直接通过路由器支配,跟主机没关系)
    ps:附赠Ubuntu18.04开机启动选项
    在“Ubuntu软件”中搜索并安装GNOME Tweaks,在其中找“Startup Application”


    虚拟机网络设置

    1、下载插件

    下载nginx-rtmp-module

    git clone https://github.com/arut/nginx-rtmp-module.git
    

    下载nginx_mod_h264_streaming

    wget http://h264.code-shop.com/download/nginx_mod_h264_streaming-2.2.7.tar.gz
    

    解压后拷贝文件到/usr/local/src/

    sudo cp nginx-rtmp-module /usr/local/src/
    sudo cp nginx_mod_h264_streaming-2.2.7 /usr/local/src/
    

    2、下载nginx

    nginx的官方网站为:http://nginx.org/en/download.html

    3、进入nginx项目执行编译前的配置

    ./configure --with-http_flv_module --with-http_mp4_module --add-module=/usr/local/src/nginx-rtmp-module --add-module=/usr/local/src/nginx_mod_h264_streaming-2.2.7
    

    提示错误:
    ./configure: error: the HTTP rewrite module requires the PCRE library.
    You can either disable the module by using --without-http_rewrite_module
    option, or install the PCRE library into the system, or build the PCRE library
    statically from the source with nginx by using --with-pcre=<path> option.
    需要安装

    sudo apt install libpcre3 libpcre3-dev
    sudo apt install openssl libssl-dev
    

    提示错误
    ./configure: error: the HTTP gzip module requires the zlib library.
    You can either disable the module by using --without-http_gzip_module
    option, or install the zlib library into the system, or build the zlib library
    statically from the source with nginx by using --with-zlib=<path> option.
    需要安装

    sudo apt install ruby
    sudo apt install zlib1g
    sudo apt install zlib1g-dev
    

    提示错误
    /usr/local/src/nginx_mod_h264_streaming-2.2.7/src/ngx_http_streaming_module.c:158:10: error: ‘ngx_http_request_t {aka struct ngx_http_request_s}’ has no member named ‘zero_in_uri’; did you mean ‘plus_in_uri’?
    if (r->zero_in_uri)
    ^~~~~~~~~~~
    plus_in_uri
    屏蔽出错的if判断即可

    4、配置通过之后把Makefile拷贝出来,然后编译

    // 可能会遇到变量未使用的错误,去掉Makefile文件中-Werror
    cp objs/Makefile ./
    make
    sudo make install
    

    5、配置nginx.conf

    sudo gedit /usr/local/nginx/conf/nginx.conf
    

    在最后加入:

    rtmp {
        server {
            listen 10081;  #直播端口号
            chunk_size 4000;
            application hls {  #rtmp推流请求路径  
                live on;
                hls on;
                hls_path /usr/local/nginx/html/hls;
                hls_fragment 5s;
            }    
        }
    }
    

    在原来的http中加入下面配置的server部分

    http {
        server {
            listen  10080; #点播端口号
    
            location /stat {    
                rtmp_stat all;    
                rtmp_stat_stylesheet stat.xsl;    
            }    
    
            location /stat.xsl {    
                root /usr/local/src/nginx-rtmp-module/;    
            }    
    
            location /control {    
                rtmp_control all;    
            }    
    
            location /hls {  
                # Serve HLS fragments  
                types {  
                    application/vnd.apple.mpegurl m3u8;  
                    video/mp2t ts;  
                }  
                root html;   #m3u8源文件放到/usr/local/nginx/html下,其他位置有问题
                expires -1;  
            }  
    
            location ~\.flv {
                root  /home/xxxx; #点播源文件的目录
                flv;
            }
            location ~\.mp4$ {
                root  /home/xxxx; #点播源文件的目录
                mp4;
            }
        }
    }
    

    6、设置权限

    需要先启动nginx,并重启电脑之后执行权限设置(也可以指定为其他路径,需要在nginx.conf的hls_path处配置-步骤5)

    sudo chmod 755 /usr/local/nginx/html/hls
    

    7、启动

    sudo /usr/local/nginx/sbin/nginx
    

    重启

    $ps -ef | grep nginx
    root     18764     1  0 09:30 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
    nobody   18765 18764  0 09:30 ?        00:00:01 nginx: worker process
    nobody   18766 18764  0 09:30 ?        00:00:00 nginx: cache manager process
    $sudo kill -QUIT 18764 18765 18766
    

    8、OBS推流

    我用的是OBS

    sudo apt install obs-studio
    

    具体使用方法自己网上搜,一大片
    给出几个图片自己悟吧


    步骤一
    步骤二
    步骤三
    步骤四

    9、ffmpeg推流

    sudo apt install ffmpeg
    

    推流命令

    ffmpeg -re -i ~/Video/test.mp4 -vcodec libx264 -vprofile baseline -acodec aac  -ar 44100 -strict -2 -ac 1 -f flv -s 1280x720 -q 10 rtmp://localhost:11181/hls/ 
    ffmpeg -re -i test_2.mp4 -c:a mp3 -ar 44100 -ab 48k -c:v libx264 -s:v 3840x2160 -f flv rtmp://localhost:10081/hls/
    ffmpeg -re -i test_1/轻松.m3u8 -c:v libx264 -c:a aac -s:v 1920x1080 -strict -2 -f fls rtmp://localhost:10081/hls/
    

    -re 以本地帧频读数据,主要用于模拟捕获设备
    -i path 输入视频地址

    -vcodec视频流编码方式
    -b 视频流帧码率(默认只有200k,一般都需要手动设置,具体的数值视codec选择而定)
    -r 视频流帧率(一般说来PAL制式通常用25,NTSC制式通常用29)
    -s 视频解析度(分辨率,也要视codec和你的需要而定。另:具体写法使用“数字x数字”的形式)
    -t 处理持续时间

    -acodec 音频流编码方式
    -ab 音频流码率(默认是同源文件码率,也需要视codec而定)
    -ar 音频流采样率(大多数情况下使用44100和48000,分别对应PAL制式和NTSC制式,根据需要选择)
    -ac channels 设置通道,缺省为1

    -f 强制使用某种格式

    -vn 屏蔽视频流
    -an 屏蔽音频流

    -b 设置比特率,缺省200kb/s
    -r 设置帧频,缺省25
    -s 设置帧大小,格式为WxH,缺省160x128.
    -aspect 设置横纵比4:3\16:9;1.3333\1.7777
    -croptop/botton/left/right 设置顶部切除带大小,像素单位
    -padtop/botton/left/right size 设置顶部补齐的大小,像素单位
    -padcolor color 设置补齐条颜色(hex,6个16进制的数,红:绿:蓝排列,比如000000代表黑色

    -vprofile baseline, extended, main, high(https://www.cnblogs.com/tinywan/p/6404411.html)

    相关文章

      网友评论

        本文标题:网络直播/点播服务器搭建

        本文链接:https://www.haomeiwen.com/subject/jsfujftx.html