如何使用CDN加速自建的流媒体服务器

xu.wang

发布于 2020.02.10 00:04 阅读 250 评论 0

    在上篇文章中我们使用nginx + nginx-rtmp-module创建了自己的直播服务,也可以使用OBS进行推流、VLC进行播放等。

    但是在拉流时我们会遇到一个问题:卡顿。当我们的服务器的下行带宽设置为1Mbps时,在拉流的时候出现明显的卡顿问题,而且是只有一个人播放的时候会出现卡顿。

    问题的解决方案也很简单,增加服务器下行带宽即可(这就是为什么上篇服务器带宽购买的是7M的下行带宽)。但是考虑到成本问题,盲目的增加带宽并不是一个性价比高的办法,此时我们就需要使用第三方CDN对我们的服务器进行加速,这样既可以压缩成本,也可以对拉流不分地域的进行提速。

    但是问题有来了,在查询阿里云、七牛云、腾讯云等CDN方案时,只能对文件、录播进行加速,并不能直接加速我们的直播(可加速各自平台的直播服务),这样怎么办呢?

    下面的方案可供参考:以阿里云的OSS + CDN为例,由于CDN可以加速文件,我们将自己流媒体服务器在直播时产生的“*.m3u8”“*.ts”文件实时传输到OSS中,然后通过加速域名进行拉流,即可实现直播的加速。

    但是此方案有很多缺点:

          1. 只能对通过http(s)播放.m3u8的用户进行加速,不能加速使用 rtmp:// 进行拉流的用户;

          2. 由于上传到OSS需要时间,所以在延迟上会相应的增加时间;

          3. 需要平衡ts切片时间、OSS上传时间等,防止用户播放时在CDN中获取不到文件的问题;