共计 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