srs大神

https://github.com/ossrs/srs/wiki/v4_CN_Home

 

大神是用来膜拜的。

对比一下,我的经历没有哪一段时间是沉淀的。

2011-2013 UT斯达康(深圳)

2014-2016 创业公司(深圳),iOS

2016-2018 平安科技(深圳),iOS

2018-        AnyChat(广州),iOS

 

  • 2005-2007年,20-22岁,中南大学本科,基本OO面向对象思想,C#/C++基础,软件项目研发和管理基础。
  • 2007-2009年,22-24岁,第一份工作,大唐电信,用C++做网管软件。
  • 2009-2010年,24-25岁,外派微软做软件测试。

2010年互联网流媒体开始兴起,他来到了做网络电视台的浪弯。一开始从Flash播放器做起,Flash是Action,他没接触过,但他很淡定:“没有用过,学就好了,难道能比C++还难么?!”当时浪弯有七八个播放器,一个客户就用一个(定制个功能就拷贝一份代码)。花了6个月时间杨成立调研了OSMF和FlowPlayer,选了Adobe的OSMF框架做播放器,所有客户都用一个播放器,用不同的皮肤和控制器。这些对他而言不难,因为MFC框架比这个要解决的问题多太多了,通过分层就能解决定制化的问题。活干完后的结果是,老板很满意,而杨成立也算入行了。

浪弯的视频文件转码系统质量很差,画面没有竞争对手的清楚,负责项目的同事离职了,老板问杨成立能不能接。彼时的杨成立,连IPB帧都搞不清楚,FFMPEG是什么也不知道,但他不觉得有什么好怕的——不懂可以学嘛。

 

2014年

        2014.11.28,离这个计划4年多了,补充后来的进展:

        基本上完成了第一个5年计划,25-30岁的计划,流媒体行业还是知道点了,完成了SRS1.0的研发(https://github.com/ossrs/srs)。

  • 2010-2012,25-27岁,视频入行(转码集群和播放器研发)
  • 2012-2014,27-29岁,专业化(RTMP流媒体服务器集群)
  • 2014-2016,29-31岁,研发团队管理(调研,培训,跟进,CR,关键技术研发,团队制度)

 

2012年,杨成立来到蓝汛,这时RTMP直播,也开始流行起来。

当时蓝汛用的是Adobe的FMS/AMS服务器,每年得付不少的License费用,而且随着客户量的增长,要付的费用越来越高。更重要的是,FMS/AMS没有源代码,也没有提供集成和定制服务。譬如计费就只能解析FMS的日志,这个日志本身不是用来计费的,所以有时候会出现5Gbps的流量。那时候CDN的机房都是千兆网跑满也不过1Gbps,肯定是个Bug。

于是,计费系统就和流媒体组商量好,如果超过1Gbps就算是异常日志,丢弃。然而蓝汛自己RTMP服务器上线时,单台服务器超过了1.5Gbps(一台双网卡服务器),结果就没有计费,免费给客户服务了。除了计费,出了问题也无法排查,只是知道连不上,推流失败,播放失败,不知道为什么,FMS的日志也没有任何信息。蓝汛只好自己研发RTMP流媒体服务器。

流媒体服务器一方面是服务器,一方面是流媒体。杨成立从epoll和select开始看起,学习nginx如何处理连接;看rtmpdump如何处理RTMP连接。那时候RTMP协议已经公开,对照着协议看。三个月的实习期后,他给出了可行性报告,又过了三个月RTMP源站服务器做好了。当实现RTMP边缘时,杨成立发现nginx这种epoll异步处理机制处理RTMP这种复杂协议非常麻烦,每个包都是一个状态变更,特别是需要回源时,这个状态会呈指数增长,多到无法处理。后来研发负责人引荐了当时北美的架构师Michael,一个经验丰富的老程序员,五十多岁还在写代码。杨成立说:“那时我的英语听力很差,只知道他提到要么分割状态把小状态组合成大状态,要么就用setjmp和longjmp实现类似线程的机制——我也写了7年代码了,竟然不知道还有setjmp和longjmp。”于是,他赶紧补课,看ST(StateThreads)这个库的代码,学习怎么用,看setjmp和longjmp,以及coroutine、Golang,事后他感叹到,原来程序的世界还有这么个世外桃源。

杨成立思考,Golang最关键的是goroutine,和ST就非常像。不过ST是解决网络IO问题,在服务器领域用的。而GOLANG是在语言级别,解决所有的通用问题。协程可以简单看成“不用加锁的线程”,因为没有锁所以不用等待,没有竞争条件所以不用小心锁这个锁那个;之前代码上很容易有很多状态需要一起处理,现在就是几个if-else直接搞定。“如果可以用多线程,你的程序会如何写?”,对于服务器来说,会简单太多(如果还不用考虑锁的话)。而对于云计算,大部分程序都是服务性质的,需要在各个连接之间切换,这就是为何Golang在云计算中大行其道的一个原因。于是,他果断把蓝汛的服务器改变架构,从epoll异步状态机,换成ST的,两周之后边缘服务器就发布了,非常非常惊人的速度,他说连自己都吓到了。

上线后,各种问题来了,短则半小时,长则一周,还好Bug都能找到原因,那时候杨成立每天嘴巴里都长着溃疡,压力太大了。在所有Bug中,有一个令他记忆犹新。一个月都找不到原因,每隔三五天就崩溃一次,从coredump也看不出来什么原因,堆栈信息都没有。在一个月之后某天,突然灵光一闪可能是metadata释放后被重用了,野指针的问题,果然顺利重现挖出了这个大bug。

在加入蓝汛仅8个月时间,就上线了服务器1.0版本。2012年底,杨成立成为蓝汛的优秀员工。后续就是各种优化和解决问题,以前排查不了的问题,现在都是清清楚楚知道哪里有问题,大部分服务器直接兼容客户的编码器或播放器,客户只需要再推流就可以接入。但也有特别的,“记得有一次有个客户的编码器很奇特,所有CDN都接入不了,客户嚷嚷着要切其他CDN,我们客服自信的说蓝汛解决不了的问题,别的CDN也解决不了,结果蓝汛最先兼容他的编码器。”杨成立清晰地记得,他们的客服因此高呼研发万岁。

一年之后上线2.0,所有RTMP边缘都换成了蓝汛自己的服务器。这是杨成立做过规模最大的一个系统,部署在CDN全国各地的机房,跑在很多台服务器上,7X24提供服务。

蓝汛的这段经历,让杨成立获得很多启发,他发现技术是山外有山,人外有人,必须要不断地学习、进步,并多交流。“有时候大神一句话,得自己摸索好几年。”也正是CDN的这段经历,让他看到了云计算广泛的市场,那是一个可以用得上工业级大规模系统的地方。

 

2009年,我刚刚进入视频行业,从Flash播放器开始做起,也做过FFmpeg转码服务器。2012年,ChinaCache如日中天,要做CDN自研的视频服务器,我也就开始做视频服务器。

到2013年底,我开始做开源视频服务器SRS。

从进入视频行业开始,我就一直很幸运,在每个公司都有被信任和委以重任。特别感谢ChinaCache的付亮,不仅给我从0到1做视频CDN的机会,还不时在管理上启蒙我;感谢观止创想的杨默涵、雷健和于冰给予我的信任,让我负责技术团队,经历过的人才知道,创业维艰,信任无间;感谢叔度引荐我进入高手如云的阿里,开启了我从直播到WebRTC的技术新旅程。

我最初也是看着Nginx的代码写的视频服务器,但做到级联时遇到了复杂状态机的问题,由于epoll异步回调导致服务器逻辑变得特别复杂。

当时我就去请教了ChinaCache的技术大神Michael Talyansky,他告诉我状态机应该用coroutine解决,coroutine不是进程也不是线程......大神看我仍然一脸懵逼,又补充道:可以认为coroutine就是线程,不过没有锁切换开销也没有竞争条件。

回去之后我补了很久的功课,了解了coroutine的详细实现,并且用coroutine改写了视频服务器,才发现这招果然简单有效、直达痛点。这让我认识到人外有人,天外有天,只有踏实努力,不断进步,才能体会到技术的乐趣。

 

我从2013年底开始做SRS,本来只想做个编码器收流的服务器,后来随着直播需求的爆发,关注的人越来越多,SRS的功能自然也就越加越多。

2015年底,SRS1.0发布。不过,关注度比较高的还是2017年左右发布的SRS2.0,实际上SRS2.0在2016年就基本成型了,只是一直在完善稳定性,所以就迟迟没有发布。

2019年底,SRS3.0发布。这一次,SRS基本具备了直播领域视频服务器应该有的核心功能。直播本质上是互联网的在线娱乐视频,随着互联网基础设施的完善(CDN、云计算和浏览器)而大放异彩,进而在各行各业都得到了广泛的应用,比如秀场、电商、教育、广电等等。

 

https://winlin.blog.csdn.net/article/details/6090234

https://www.sohu.com/a/127412347_465959

https://www.pianshen.com/article/94941278641/

---------------------

 

最初的Maintainer只有我和文杰大神。文杰是我在ChinaCache的同事,我离职后,他接替我继续维护和研发CDN视频服务器。

文杰对技术的敏感度高,又有很大的开发热情。有一次公司Outing去海边玩,闲聊时,文杰就问我视频服务器有哪些技术难点(我当时在从0到1研发视频服务器)。

后来文杰去了学而思,每隔一阵儿就听他说又搞定了一个啥,想要在业内做到最好。每次见面,文杰都说要回来搞搞SRS了,再不搞就老了。

 

https://www.pianshen.com/article/94941278641/

 

第三个关键词是“开源”。前几天我还跟FFmpeg的维护者之一,“悟空”大师兄开玩笑(LiveVideoStack注:刘歧是OnVideo联合创始人,FFmpeg Maintainer/顾问,被多媒体技术开发者尊称为“大师兄”),说他们把我们这些做Codec的人搞的没活干了。十年前音视频行业的技术门槛还是很高的,但这几款开源软件,FFmpeg、x264、OpenCV等极大地降低了这个行业的技术门槛。所以我说这个行业能到今天这个状况,是所有从业者集体努力的结果。

 

 

https://my.oschina.net/u/3521704/blog/4610139

 

posted @ 2021-01-10 09:36  lianhuaren  阅读(36)  评论(0编辑  收藏  举报