0x00 引言
最近几年直播平台崛起迅速,如主流的斗鱼、熊猫及YY等。这里我们从技术层面来从头搭建一个直播平台,方便播放”不合规”的视频。
要实现一个直播系统,需要实现三个技术,分别为流媒体服务器以及推流与拉流。流媒体服务器作为流的中转站可以实现推拉流,推流可以认为是主播使用的技术软件,能实现视频、音频以及摄像头的信息采集功能,而拉流则是视频订阅者从服务器获取视频的技术。
由于流媒体服务器需要公网IP,这里直接使用阿里云服务器。
0x01 环境搭建
1 | 1 流媒体服务器 |
1 流媒体服务器
1.1 云服务器搭建
这里用的是阿里云服务器[1],由于考虑到只是测试使用,因此买了一款1核2G,1Mbps的服务器。运行远程主机以后,记得添加安全组并开启1935端口,因为后面的srs需要用到该端口来交互信息。
值得注意的是,阿里云已经为用户提供了直播控制台,也就是说没必要自己部署流媒体服务器,但是由于要收费,我们这里还是部署开源的框架。
1.2 srs部署
流媒体服务器目前有很多优秀的开源框架,知乎上也有对比不同框架的文章[2],这里我们选用srs。
从上图可以看到,srs部署在Ubuntu下,网上有很多技术博客[3]已经具体介绍了其安装方式:
1 | #先去Git上clone |
2 OBS推流部署
这里使用的推流软件是OBS,非常好用快速,该软件可从官网[4]免费下载。第一次使用,需要修改一些关键设置:
1)推流设置
这是最重要的设置内容,拉流的时候需要用到该地址。
推流地址的设置格式如下:
1 | #用户名 |
2)输出设置
这个设置关系到你直播内容的清晰度、流量使用量等,设置方法可以参考B站大佬的教程[5]。
x264是一个开源的H.264/MPEG-4 AVC视频编码函数库(不明觉厉就选它)。CBR是以恒定比特率方式进行编码(具体内容请自行查阅,由于服务器流量少,只能给500 Kbps)。CPU使用预设可根据自己电脑配置做调整。
3)视频设置
基础分辨率为电脑的分辨率,输出分辨率为拉流端的分辨率,如果流媒体服务器流量小,可以选择较小的输出分辨率。FPS值为刷新频率,普通人人眼能识别的帧率只需25帧,这里给30帧,也是为了考虑流量问题。
设置完成后,只需要点击”开始推流”即可。
3 VLC拉流部署
这里使用的推流软件是VLC,PC端也可以从官网上直接下载,安卓端可以从APKPure下载。下载完成后在”串流”菜单中输入 1.2 节中设置的流地址,就能连上流媒体服务器,进行拉流动作。
0x02 常见问题
1 | 1 黑屏 |
1 黑屏
OBS推流时,设置”显示器捕获”与”窗口捕获”,打开以后显示黑屏。有多种问题源,因此有多种解决方法,常见原因参考B站up主教程[6]。
我的电脑原因可能是obs渲染采用的是集成显卡,解决方法查阅贴吧[7]。Windows10 设置,系统,显示,最下边图形设置。图形性能首选项里边,经典应用,浏览添加OBS应用程序,OBS选项设置为节能(反正我的节能是集成图形输出,设置完毕之后就可以用)。
0x03 引用文献
[1]https://www.aliyun.com
[2]https://www.zhihu.com/question/31160392/answer/256141081
[3]https://blog.csdn.net/lmj623565791/article/details/77937483
[4]https://obsproject.com
[5]https://www.bilibili.com/video/av52560685
[6]https://www.bilibili.com/video/av65194185
[7]http://tieba.baidu.com/p/6364329041