我们在阿里云上搭建流媒体服务器, 服务端环境为 ubuntu14.04.
安装
首先下载依赖:
- pcre 库(perl兼容正则表达式库)
官网: www.pcre.org
下载地址: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
下载并解压到根目录:
1 | wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz |
- zlib 库
官网: www.zlib.net
下载当前最新版本并解压到根目录:
1 | wget http://sourceforge.net/projects/libpng/files/zlib/1.2.8/zlib-1.2.8.tar.gz |
下载 nginx 最新版本并解压到根目录:
1 | wget http://nginx.org/download/nginx-1.9.9.tar.gz |
下载 nginx-rtmp 模块:
1 | wget https://github.com/arut/nginx-rtmp-module/archive/master.zip |
编译并安装:
切入 Nginx 的目录运行配置命令并编译安装:
1 | ./configure --prefix=/usr/local/nginx --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_dav_module --with-http_flv_module --with-http_realip_module --with-http_gzip_static_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-pcre=../pcre-8.37 --with-zlib=../zlib-1.2.8 --with-debug --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --add-module=../nginx-rtmp-module-master |
关于各个配置参数的备注说明:
1 | --prefix=/usr/local/nginx # 配置 nginx 安装目录, 默认位置在 /usr/local/nginx |
配置
1 | vim /usr/local/nginx/conf/nginx.conf |
在文件末尾添加对 rtmp 协议的配置:
1 | rtmp { |
注意要放在文件的根位置, 不要写在 http
的花括号中.
以上配置仅供测试, 详细配置需要参考 nginx-rtmp
的 wiki.
运行
运行服务器:
1 | sudo /usr/local/nginx/sbin/nginx |
运行时会占用 80
端口和 1935
端口.
退出:
1 | sudo /usr/local/nginx/sbin/nginx -s quit |
测试
我们使用 obs 录屏通过流媒体服务器转发 b 站来测试.
需要额外准备两个条件:
- obs 客户端;
- b站直播间.
我们先下载安装配置 obs 客户端:
obs 的官网地址: https://obsproject.com/.
obs 是一个用于直播录制的跨平台自由软件, 有针对 window, mac 和 linux 平台的发行版本. 对 linux 平台, ubuntu 上有官方构建版本, Arch Linux, OpenSUSE, Gentoo 有第三方构建版本, 其余发行版需要自己编译.
我们使用的客户端环境是 ubuntu 15.04
, 参见 obs 官方说明安装 obs 客户端:
obs 依赖 FFmpeg, 如果尚未安装需要先安装 FFmpeg:
1 | sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next |
添加 obs 的源然后安装:
1 | sudo add-apt-repository ppa:obsproject/obs-studio |
运行 obs, 在设置-串流中设置串流类型为自定义, 在 URL 一栏填写阿里云服务器 ip, 流密钥一栏填入 test
(使用前文默认配置时).
打开 http://live.bilibili.com/
, 进入自己的直播间(如果没有权限需要事先申请, b 站直播申请需要实名认证), 开始直播后 会弹出包含直播码的对话框.
修改 nginx 的配置文件(/usr/local/nginx/conf/nginx.conf
):
在 record off
后添加一行:
1 | push rtmp://live-send.acg.tv/live/<你的直播码>; |
重启 nginx 服务器.
回到 obs 界面, 点击开始录制和开始串流按钮, 如果一切正常, 你的屏幕画面应该会出现在直播间的屏幕上.
在上述配置文件中还可以添加多个 pushes
, 从而实现向多个直播平台推流.