阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Ubuntu下用nginx和nginx-rtmp-module搭建流媒体服务器

160次阅读
没有评论

共计 2486 个字符,预计需要花费 7 分钟才能阅读完成。

前言:

公司要新开一个与视频直播相关的游戏的坑。首先需要解决的问题就是:如何实现流媒体直播,是采用现在比较成熟的各种云直播方案,还是自己搭建视频服务器。由于后续运营可能面对国外市场,采用国内的云,意味着前期需要学习相关的 sdk 接入,然后在此基础上进行的开发最后却可能完全用不上。因此决定先自己搭建一个流媒体服务器进行前期开发,最后再决定实际运营采用哪一个云,或者干脆就用自己的服务器也未可知。总之,我们需要快速搭建一个流媒体服务器以便迅速展开开发工作。

1. 下载 nginx-rtmp-module:

nginx-rtmp-module 的官方 github 地址:https://github.com/arut/nginx-rtmp-module
使用命令:

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

下载的内容放到~/prog 目录下。

2. 安装 nginx:

机器原来已经用 sudo apt install 装好了 nginx。

nginx -v
nginx version: nginx/1.10.0 (Ubuntu)

因为要配置增加模块,安装好的版本没法玩,卸载了吧。

sudo apt remove nginx

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

下载最新的稳定版本 1.12.0,解压到~/prog 下面。
进入到 nginx 1.12.0 的目录下,配置一下:

./configure –add-module=../nginx-rtmp-module –with-http_flv_module –with-http_mp4_module

考虑后期可能有需要播放 flv,mp4 的需求,加上相关模块。
吐槽: 起先用配置 –prefix=/home/myfolder 把 nginx 安装到本地用户目录下,以为可以避开一些权限问题,少用几次 sudo。没想到开启 80 端口,记录 log 什么的还是要权限,所以还是安装到默认的系统目录下吧。sudo 是 debian 和 ubuntu 的特点,习惯就好。

报了这样一个错:

./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.

意思就是 HTTP rewrite 模块需要 PCRE 库,要么你加个不要这个模块的选项重新配置 nginx,要么就安装 PCRE。当然必须选择安装 PCRE。

sudo apt install libpcre3 libpcre3-dev

系统报告 libpcre3 早就装好了,其实只需要装开发库 libpcre3-dev。
重新配置,这次报告是需要 OpenSSL,继续装:

sudo apt install openssl libssl-dev

系统报告 openssl 早就装好了,已经是最新版本了,想来还是跟 PCRE 一样,只需要装个开发库。

再次配置,成功。接下来就是编译安装。因为要装到系统目录下,make install 前面要加 sudo

make
sudo make install

修改配置项后,为安全起见,记得用 make clean 清理一下,然后再 make

3. 配置 nginx:

sudo vim /usr/local/nginx/conf/nginx.conf

在最后加入:

rtmp {server {listen 1935;  # 监听的端口 

        chunk_size 4000;

        application hls {#rtmp 推流请求路径  
            live on;
            hls on;
            hls_path /usr/local/nginx/html/hls;
            hls_fragment 5s;
         }    
    }    
}

这里的视频流目录 hls_path 设置为 /usr/local/nginx/html/hls,这个目录的权限用 chmod 设置为 775。

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

http {  

    server {listen  8080;  

        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;  
            expires -1;  
        }  

        location ~\.flv {flv;}
        location ~\.mp4$ {mp4;}
    }  
}

进入 /usr/local/nginx 目录下,键入 sudo ./sbin/nginx 就可以启动。相关命令用 - s 参数发信号,- s 后跟 stop,quit,reopen,reload 等可以停止 / 推出 / 重新开启 / 重新加载

推流测试

Windows 或者 linux 都可以用 OBS 做直播推流测试,一款非常好的免费开源直播软件。
官网:https://obsproject.com/。

现在最新版本 18.0.1,有官方中文版,自动识别的。视频来源可以选显示器捕获或者窗口捕获,以本机屏幕上的内容推送到先前配置好的流媒体服务器上。

可以看到服务器上的 hls 目录下有一个以你指定名字命名的后缀为 m3u8 的文件和其他不断实时生成流媒体文件。用 safari 浏览器可以直接打开这个 m3u8 文件观看直播视频。其他浏览器需要插件,下文再谈。

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-06/145286.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2486字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中