推流服务方案演进
背景
目前在参与的一个项目,需要使用到推流服务,将直播的视频转存在oss上,最终在C端可以查看。
初始方案
因为是业余项目,所以首选了Go来做,不是不想用Java,而是想扩展一下能力。
最开始是研究了rtmp协议,想法是通过GPT来实现一个接收推流的服务器来接收推流。但是考虑到并不熟悉这个领域,改为去开源仓库寻找优秀的项目来搭建rtmp服务器。 最终选择了LAL这个项目,可以满足推流和视频本地存储,二开后在生成ts时添加oss的上传功能。
这种方案存在的问题是,流量的转发依赖服务器的带宽。在项目开始阶段,就投入过高的成本是不可接受的。
最终方案
就继续寻找更好的方案,最终发现阿里云OSS提供了推流功能,放弃原来的自建推流接收平台,通过阿里云的SDK创建推流,并配置在推流的设备上。这种做法完全减轻了服务器的压力,并且对推流、视频的操作和安全性都满足了我们的需求。
如果遇到卡住的难题,可能说明找错了方向,多找找其他途径,说不定就柳暗花明了。