SRS 创始人杨成立:成为 CTO 的时间比计划提前 10 年

原创
06/08 15:45
阅读数 1.9W

近日,开源视频服务器 SRS 已成为增长势头最快的同类型软件,Stars 数量也是音视频服务器中最多的,达到 14 K。更重要的是,其性能约是 NginxRTMP、Janus 的三倍,目前还没有更高性能的开源同类产品。SRS 创始人杨成立认为,SRS 现在在音视频领域取得的影响力,来源于极好的运气,和比较长期的投入。

8 年前,杨成立认为音视频的开源服务器,都没有抓住音视频的根本问题,于是决定再做个“更圆的轮子”。8 年过去,最初的愿景也已经达到——SRS 可以让音视频更简单。而提到 SRS 的增长逻辑,杨成立认为其核心是开源和开放,“我坚持认为 SRS 要永远保持开源、开放和免费的社区属性。”

为了进一步了解杨成立和 SRS 的发展轨迹,OSCHINA 专访杨成立,一探背后的故事。7 月 31 日,杨成立也将作为讲师出席「GOTC 全球开源技术峰会」,并在“音视频性能优化”分论坛上带来《开源视频服务器,凭什么 SRS 能做到全球 Top1?》主题演讲,敬请期待!

直达官网:https://gotc.oschina.net/guest/lists

Q:首先请介绍下自己吧。

杨成立:

我有一个小梦想,希望做的东西能给各行各业带来一些价值。发现软件是实现这个梦想最合适的方式,因为它的依赖比较少,所以在大学就决定做一个软件工程师,现在大家叫码农。

经过 14 年的工作,对这个问题的认知也有了更全面的认识,虽然离这个小梦想的实现还很远,因为运气很好,所以也取得了一些小的进展。

2007 年,带着 20 万行代码从大学毕业,主要是 Asp.NET 网站,包括 H5、C#、SQL 等。毕业后,没有选熟悉的和工资高点的 C#,而是选了一份不熟悉而且工资低的 C++ 的工作,只是因为 C++ 码农是鄙视链的顶端。

工作头三年,没做出什么成绩;做过 C++,也做过 C# 测试开发。当然也比较全面的实战了这些语言和研发过程,所以后面有比较多的选择。发现技术一定是领域相关的,我必须要扎根在某个行业和领域,什么行业都能做就都不能做;在 2010 年,选择了互联网音视频行业,当时还写了篇《从今天起,去做互联网》,也一直在更新这篇文章,可以看到的想法也一直在不断变化。

每过几年,也会回头看看这篇文章,看看之前的一些想法。比如曾经计划 40 岁当 CTO,没想到 30 岁左右就当了一个小公司的 CTO,心里还很 Happy ,觉得自己的愿望提前达成,虚荣之下也只剩下沾沾自喜,想起来觉得自己很搞笑。

这十年的经历就比较简单,和当初想的一样,公司可以换但行业不换,坚持在互联网音视频这个行业中摸爬滚打。总的算起来做过 1 年左右 Flash 播放器,1 年左右 FFmpeg 转码,4 年左右直播服务器和 CDN,4 年左右 RTC 的传输网络;而 SRS 基本上和后面这 8 年的经历比较吻合,SRS 基本上也是属于音视频服务器,也就是后端网络。

除了技术能力,我管理能力方面也在发展。因为技术是人的技术,不存在纯粹的技术,也不能把码农当成机器来看,不懂管理必处处碰壁。SRS1/2/3 的代号是感谢学校的老师,SRS4 代号是 Leo,蓝汛前副总裁付亮,我管理的启蒙老师。

如果要说长处,可能是超好的运气和能比较长期投入吧。音视频行业最初也不是最热的行业,我也不是什么深思熟虑和高瞻远瞩,就是随便选的一个行业而已,只能说是运气很好。SRS 经历直播、RTC、开源商业化三大风口,除了运气,主要还是运气。

极好的运气,以及比较长期的投入,SRS 在音视频领域有了一定的影响力,而开源正是可以给各行各业创造价值和被广泛使用,这正是和我那个小梦想很有联系。当然离梦想的实现还很远,SRS 并没有大家想象的那么大的影响力,或者说还可以有更大的动静。

Q:当初为什么想要做开源视频服务器 SRS ?

杨成立:

做技术的都有一颗开源的心,也很向往大神云集和对开源友好的公司。 

一般来说,对开源友好的公司都是实力很强的公司,不管是技术还是商业实力,所以也意味着里面大神很多。比如 Google、Facebook、BAT 等等,如果有一天 Linus 或内核社区的大神,去某个公司上班了,那这家公司肯定不得了。而 Microsoft 最初从仇视开源,到现在拥抱开源,也说明开源才是软件的光明大道。

所以我其实只是众多码农中的一个,SRS 也只是众多码农创造的众多音视频开源服务器中的一个,可以搜索下 Github 上的 RTMP Server 就有 800 多个,音视频的开源项目就更加多如牛毛了。做开源就是每个码农的正常生活,只是持续做的比较少而已。

另外,码农也是受益于开源社区,在每个码农心中也感恩开源社区,如果能为开源社区贡献自己的力量,是一种至高无上的荣誉(吃饱饭了没事干就会想要荣誉),这种荣誉是一种内心深处的需求,不仅仅是为开源社区做了贡献,更重要的是码农自己的精神需要。

我做 SRS 的原因,从技术上说,是当时认为音视频的开源服务器,都没有抓住音视频的根本问题。当初只有 NginxRTMP,但它是 Web 领域的,直播勉勉强强可以用 Nginx 搞,RTC Nginx 搞服务器就得秃一大片。本质上是因为音视频真的太复杂了,直播的 RFC 文档大约 3 个,RTC 的主要 RFC 大约 100 多个,而且还不断在增加。Nginx Web 领域的服务器,拿着 Nginx 敲了 Web 的钉子,还要敲音视频的钉子,就有点勉强了。

SRS 可以让音视频更简单,我认为自己造的轮子可以更圆,我很确信音视频真的太需要简单了,因为复杂所以小众,这是阻碍它被广泛应用的一个重要因素。

码农做开源项目的唯一和普适理由就是:我造的轮子可以更圆。

Q:您最初并不是音视频领域的,也是从 Flash、FFMPEG 这些慢慢学起来的,最后能自己做出一个流媒体服务器,能谈谈自己的学习技巧吗?以及对音视频领域技术变迁的看法?

杨成立:

我技术栈相对比较全面,一直在学习一些东西。

从语言上看,在 04 年学校学的 C,05 年自己学的 C++、C#、H5 SQL,09 年学 Python,12 年学 Go,也能改 Java、Scala、Dart、PHP、Nodejs 等代码,每隔那么久会回头再学,比如 15、17、19 年又学过 Go。

从框架上看,05 年学的 Asp.NET 网站开发,07 MFC 深入浅出,09 Flash 播放器,10 FFmpeg,12 Nginx,13 StateThreads(C++协程),15 Angularjs Bootstrap,也学过 Android Flutter,每隔那么久也会回头再学,比如 13、15、19 年详细看过 StateThreads。

系统性知识也很重要,让这些技术形成系统,有些是对技术本身的思考。比如数据结构、算法和设计模式,重构和 TDD,面向对象分析与设计,软件工程和敏捷开发,人月神话等。也会看网易公开课,MIT 和哈佛的计算机课。有些不一定会有实际操作的代码,更多是对技术的发展和规律的分析,能让人豁然开朗。

从音视频领域看,07 年毕业论文是写的 JPEG 图像压缩,09 Flash 客户端和 FFmpeg 编解码,12 年开始是直播传输协议,17 年是 RTC 的传输和相关技术。尝试过往编解码和算法方向走,发现不是自己有热情的,还是希望看到技术落地应用,这需要的更多是系统知识。

我学习技术的技巧有几点心得,可以和大家分享,也不知道是不是有用:

  • 对单点技术投入足够的时间,学习不能止步于大学。
    • 无论什么方法,如果投入的时间不够都没作用。不存在什么每天学习一分钟掌握音视频的方法。
    • 对单点技术最好能投入持续和大块的时间,比如某个语言和框架,某个协议,某个开源项目,最好能规划一个月或更久时间,每天学习一点,而不是直接上手,遇到问题就查查问问,这样零散的使用不算学习。
    • 学习也不能止步于大学,毕业后就不学了。如果只是学校比较系统的学习,工作后全都是各种零散的查资料和解决问题,复制粘贴走天下,这和刚毕业的学生差别不是很大。
  • 具体的技术跟着实际需要走,一定要自己码代码。
    • 在工作中需要用到的技术,又觉得它很重要,就可以重点花时间学;如果隔那么久又需要用到,如果对这个技术感觉还掌握得不透,就应该再花时间学习一遍。比如 Go 我系统性学习过三次,每次隔了差不多一年多。比如 StateThreads 也是差不多,这些对于我来说是必须要非常了解的技术。每次开始做一个新的项目或产品,如果里面某些技术很重要但还没掌握好,我就会安排时间系统性再学习一遍。
    • 学习时一定要自己亲自敲代码,不要复制粘贴,甚至只看看结果,比如基础数据结构我都用 C 实现过,比如《MFC 深入浅出》代码跟着写了几遍,才对虚函数和框架设计掌握比较好。
    • 系统性学习一定要做笔记的,我一般做完项目笔记也写了一堆,再整理下就可以发到公众号。比如 SRS 的性能分析,陆续做了几年,每次都会把过程记录下来,把 Commit 备注比较详细,这些总结最后就写了篇《性能优化:SRS 为何能做到同类的三倍》,显然这个不是一两天能写出来的。
  • 思想的毒,靠思想解决不了,撸起袖子就是干。
    • 有时候学得也会觉得无聊,比如也会觉得有点没意思,码这些东西也没个头,学这些东西还不知道有没有用,未来发展还不知道好不好。
    • 每次我犹豫的时候,就让自己做具体的事情,学新的东西,或者解决具体的 bug,或者写一篇欠了很久的 Wiki,或者发篇文章分享技术。
    • 犹豫彷徨说明自己有疑惑没想清楚,这时候停下来就凉了一事无成了,对担忧最好的解药就是躬身入局,撸起袖子就是干。

音视频领域技术不断在变,行业发展很快,技术更新很快,会造成不知道跟进哪个技术,不知道使用哪个开源项目,这时候停下来想是没用的,就是干就好了。

Q:您现在每天大概花多少时间在 SRS 上,主要做些什么?

杨成立:

我花在 SRS 的时间不固定,一般假期会多一些。现在阿里已经在自己的系统也用到了 SRS,所以有些 Patch 也会反馈到开源社区,也有固定的投入在服务器上。

我在 SRS 的投入主要是技术委员会,包括几个方面:

  • 技术方向探讨,哪些技术方向值得做,哪些要放一放,比如级联我们探讨了比较久用 SRT 还是 QUIC,最终决定还是用 QUIC(因为 QUIC 不仅仅可以用在级联)。
  • 探索 Maintainer 和公司的良性互动。我认为开源的开发者,和自己所在的公司的业务,是可以形成良性互动的,但不是天然就这样的,需要做出努力才能做到。比如自然状态下,公司主管一般会认为开发者做开源会影响业务,因为做开源需要时间;而通过沟通和了解,开发者参与开源,是可以对公司的技术品牌和影响力,技术能力和业务诉求,都有比较好的互动,这需要花时间,也是我的重要工作。
  • 支持提供社区服务的开发者。SRS 会一直保持开源、开放和免费,但是社区的用户需要培训、咨询、技术支持、定制等等,这些一部分是社区完成,我会花很多时间完善文档和提升稳定性,但如果能有专业的开发者服务于社区,提供有价值的付费服务,就可以形成更良性的循环。我把它叫做 SRS 的增长飞轮,如下图。

SRS 的增长逻辑,开源和开放是核心逻辑

  • 切入点:开源、开放和免费的项目,简单高效的特点。
  • 推动力 1:切入点降低音视频门槛,带来更好的开发者体验。
  • 推动力 2:由推动力 1 带来社区的发展,开发者的使用。
  • 推动力 3:由推动力 2 带来专业和付费的培训,咨询和定制服务。
  • 回归切入点:推动社区保持开源、开放和免费,更简单高效。

另外,随着 SRS 价值的增长,参与的开发者和公司的增多,公司开始因为参与 SRS 而获得益处,从而赞同和认同开发者参与和投入开源,让 SRS 成为更活跃的项目,最终降低门槛和提升开发者体验。

SRS 会一直保持开源、开放和免费,如果你愿意基于 SRS 做专业的服务,非常欢迎联系我。

Q:过去 SRS 有没有遇到过一些重要的抉择、取舍,您当时做了什么选择?

杨成立:

技术上的取舍会多一些,音视频的方向其实有很多中,包括:

  • 互联网娱乐,一般叫直播。这是重点核心支持领域。
  • 互联网会议,一般叫 WebRTC RTC。这是重点核心支持领域。
  • 监控安防,一般是 GB28181 RTSP。只考虑 GB28181 接入,RTSP 拉流是 FFmpeg 实现,安防也是完整的体系,我们只考虑接入摄像头。
  • 传统广电,一般编解码和 SRT 比较重要。只考虑 SRT 接入,其实 SRT 是一个完整体系,我们只考虑做 SRT 推流接入的能力。
  • 传统会议,一般是 SIP PSTN 那套体系。不考虑支持。

这个取舍其实很好做,没有纠结的,我们技术委员会都是互联网的背景,所以只做互联网的音视频。其他行业的音视频我们也只考虑接入,而不是给这个行业换一套实现(做个更圆的轮子)。比如安防行业,其实 SRS 并不做安防,里面很多云台和各种域,各种业务各种协议,我们只做摄像头接入,这样用户可以通过微信看摄像头,或者通过 WebRTC 开会时把摄像头接入。

互联网背后是非常庞大的开源和商业体系(云服务)以及人才储备,能够支撑行业的快速发展。

商业上的取舍还没有开始,很早以前 SRS 尝试过提供付费的商业版,但效果没有达到预期。现在发现是因为音视频行业还属于很早期的阶段,比如开发者数量,音视频的开发者可能比数据库的开发者要少几个量级。

我坚持认为 SRS 要永远保持开源、开放和免费的社区属性,可以由第三方公司,或者是自由职业的开发者,提供专业的付费服务,比如专业的培训机构的付费课程(当然社区也有很多免费的技术文章和分享),比如专业的付费咨询和问题支持(当然社区也有很多免费的技术交流),比如专业的功能定义和系统开发(当然社区也会有 Patch 和更多的开源项目)。

Q:SRS 现在的发展非常不错,有计划让其进入开源软件基金会发展吗?

杨成立:

正在申请进入木兰开源社区孵化,为国家的开源做贡献。

音视频一定是各个行业的基础设施,也就是云计算的基础能力,各个云厂商也都有自己的视频云。云计算一定是国家战略,开源也是国家战略,音视频的开源一定是和国家分不开的,我们国家也一定会有自己的开源生态。

开源没有国界,开发者有自己的祖国。

这不代表我以后就只喊口号了,我是个码农,码好代码就是对国家开源最好的贡献。但做开源也可以在我们国家的开源社区做呀,比如木兰宽松协议就是 OSI 国际开源联盟认可的,木兰协议是 BSD 兼容的协议。顶级的数据库 OceanBase 就是用的木兰协议。

我们国家有自己的开源社区了,除了 SRS 还会有重量级开源项目入驻,未来木兰开源社区还会有更多的动作,欢迎一起来木兰开源社区做开源呐。

注:文章发布后,6 月10 日木兰开源社区发布消息称,在 6 月 8 日的孵化项目审议会议上,SRS 已经通过审议,进入孵化。

Q:在鼓励 SRS 社区贡献方面,目前有什么激励措施吗?

杨成立:

能参与开源,就是对开发者最大的激励,开源让开发者人生更完整。

SRS 未来的激励目标不是开发者,而是开发者所在的公司,也就是开源和开发者所在公司形成良性互动,彼此促进,为开发者营造良好的参与开源的机会。

我们正在尝试各种有利于公司的激励措施。比如我们会给开发者更多的机会,在 LVS 等音视频知名会议上分享开发者的贡献,以及 SRS 在自己公司的应用,这对于公司在圈内建立影响力是非常好的机会,毕竟大家都不想去一个不重视技术和音视频技术不重要的团队,口头上说自己重视当然没有说服力,参与开源和展示自己的贡献和技术实力,是最好的技术口碑。

未来我们也会组织技术委员会交流,比如去 Maintainer 和活跃开发者的公司交流,一起聊一聊音视频技术的发展方向,也希望可以对公司的开发者的技术有一些帮助,还可能会邀请上下游的 Maintainer 比如 FFmpeg 社区的大佬一起去。

未来如果 SRS 顺利加入木兰开源社区,或者甚至加入开源基金会,那么 SRS 社区、开发者、开发者的公司,会得到更多的助力。做开源不仅仅是一种情怀,更是一种实实在在的发展路径。

也可能会组织线下的开发者的 Meetup,欢迎大家参与。

Q:当下实时音视频需求爆发,有没有给 SRS 提出新的要求?最近在 SRS 的开发方面有没有新的感悟和计划,具体是什么?

杨成立:

一直都有非常多的合作的邮件,但我的目标是做开源和开放的社区,所以我个人一直没有接过任何的定制开发。一方面定制太费时间,而我时间很少;另外一方面定制会造成 SRS 跑偏,开源社区头上顶个金主爸爸,一定会忘记自己要干啥。

虽然我不做定制开发,但是欢迎大家来接这些定制的需求,之前也有朋友接过付费的定制需求,现在也有很多朋友在尝试基于 SRS 做商业化服务。比如周围系统的开发,全链路音视频解决方案,特殊的需求定制等等,也欢迎把一些 patch 反馈给社区,推动 SRS 的成长飞轮,形成正循环。

SRS 最近关注度很高,增长速度也几乎是竖着增长,我们还是个刚刚开始的音视频开源项目,有时候也有说有些地方不如其他的开源项目,我们会有点犹豫是否要跟进别的项目。但我坚定的认为,目前 SRS 的主要问题不是战场太少,也不是用户太少,而是要做好自己最核心的直播和 WebRTC,服务好互联网音视频的关键场景,全力推进 4.0 5.0 的开发和发布,不辜负这三大风口和各位开发者的选择。

最后,帖一张 SRS 的增长图,感受下国内音视频的爆发力,感谢大家。


GOTC,the Global Opensource Technology Conference,全球开源技术峰会。该会议由开源中国社区联合 Linux 基金会发起,邀请 10+ 重量级开源基金会与开源社区深度参与,覆盖 100+ 公司的相关开源经验,涉及优秀开源项目 300+。

组成这场开源盛会的专家主要是开源领域内的知名人物,相关的分享议题也聚焦开源,包括开源的技术、开源的运营与治理、开源的发展趋势、开源技术的实践、开源的商业化等。

此次会议还史无前例地邀请了当今世界几大顶级开源基金会负责人同时参与圆桌,共同讨论开源新生态。

更有 Linux 创始人 Linus Trovalds 将分享 Linux 诞生 30 年以来他的心路历程与开源洞见。

更多信息查看:https://gotc.oschina.net

更多资讯:

展开阅读全文
打赏
4
20 收藏
分享
加载中
srs确实一把梭 舒坦
06/09 15:52
回复
举报
nice
06/09 13:40
回复
举报
不吹不黑,SRS是非常棒
06/09 10:49
回复
举报
不错的好文章
06/09 09:22
回复
举报
试过 太卡 而且部署不够灵活
06/09 08:46
回复
举报
更多评论
打赏
5 评论
20 收藏
4
分享
返回顶部
顶部