仙人掌之歌——上线运营(3)

音视频不同步

就当陈速沉醉在服务稳定运行中的快感时,詹季明第一天上班,就过来泼了一盆冷水。

“我看播放好像有点问题啊,” 詹季明那吞吐的样子能把人急死,“就是我感觉音视频不太同步,你要不要过来看下?”

陈速二话没说,跟着詹季明到了运维部那边。贺立强借来的那台电视机一直没还给点播支持组,看这样子算是长期征用了。贺立强、雷定宇还有两位新来的运维同事,也都站在那儿仔细地看着画面、听着声音。陈速站那儿听了几分钟,就知道确实是音视频不同步了,声音滞后于画面大概一秒钟左右,其实是比较明显的。

“这个怎么办啊?” 詹季明问了出来。大家这时候都转头看向了陈速。

陈速深吸了一口气,脑子里却飞快地转着,最后决定逐层排查。

“雷哥,麻烦你从边缘节点开始往上,到中转、源节点。都用VLC连http地址播放一下,我们先排除一下是否客户端播放器有问题。”

主意有了,大家都分头忙活起来。经过雷定宇逐个排查,一直回溯到了源节点,都仍然有音视频不同步现象。这下只剩下源视频编码服务ffmpeg是最可疑的了。雷定宇问着:“那是不是把ffmpeg重启一下试试看?”

“先等会,” 陈速想到了一个人,“ffmpeg现在是流媒体服务部门的葛栋山在维护,我去把他叫过来吧。” 陈速话刚说完,詹季明就抢着过去叫人了。

葛栋山来了之后,陈速把现象跟他描述了一遍,然后又说了一下排查手段。陈速看看葛栋山的表情,确认他已经明白了自己的意思,就让雷定宇将ffmpeg重启,接着再来观察效果。果然,重启之后,音视频不同步的问题解决了。

运维的兄弟们如释重负,只要眼面前的问题能解决,他们就能喘口气了。但陈速知道这事没完,他拉着葛栋山问:“栋山,你看这个问题是怎么回事?”

“我也不知道啊。” 葛栋山也是一脸茫然的表情。

“那你这边能有手段分析一下吗?” 陈速紧接着问。

“我还没看过代码,还只会用它的命令行,我……” 葛栋山有些紧张起来,额头上都有汗沁出来。

陈速知道现在还不能给他太大的压力,笑着拍了拍他的肩膀,说:“没事,我们去找鹏哥一块儿商量一下。”

找到钟展鹏之后,陈速把这些事具体说了一遍,钟展鹏先问上了:“陈工知道运行多久之后会出现这种现象吗?”

“这是头一回发现,反正时间是挺长了,从年前上线起运行到现在。” 陈速回忆着边说。

“那运维的兄弟们能写个脚本,定时重启一下ffmpeg么?” 钟展鹏先出了个主意。

“这个雷定宇已经在弄了。” 陈速不明白为什么钟展鹏要先问这个。

“那就好,” 钟展鹏的表情松驰了一些,“那这样,栋山,反正现在运维那边有个临时的办法。你还是多费点功夫,读读ffmpeg的源代码,争取在代码里解决问题。有不懂的多问问陈工,他是这方面的专家。”

栋山赶紧答应了一声,陈速一看把帽子抬自己这边来了,也不好再多说什么。谢过钟展鹏之后,陈速把这信儿给运维的兄弟们带了过去。贺立强转着眼珠,问:“陈总,你觉得栋山那小屁孩能搞定不?”

“我这心里没准啊。” 陈速只得实话实说。

“行,我知道了。” 贺立强撂下这句话就转过身继续工作了。

到了下午,洪武青亲自过来把陈速叫到他办公室去了,进去一看,贺立强、钟展鹏和葛栋山也都在里面。洪武青开始问话,原来是关心上午音视频不同步的问题。陈速便把现象和排查结果又描述了一遍,洪武青转对着葛栋山问:“ffmpeg代码已经看过多少了?”

“刚开始看。” 葛栋山回答的声音很小,看得出来他身体都绷得紧紧的。

“这样吧,” 洪武青这回主动提出建议了,“我们先把推流方式给改了。因为现在从ffmpeg到源数据接收程序还是udp方式嘛,对吧?如果这一步有数据丢失的话,也有可能会造成音视频不同步现象,所以栋山你回去之后找到tcp推流的代码,改成断开连接后不退出程序,无限重试就可以了,行吧?”

陈速丝毫不怀疑,其实洪武青已经把ffmpeg代码从大体上给过了一遍,所以能给出精确的意见来。听了这话,葛栋山也松了口气,立即答应下来。因为有个确定的事情能做,远好过于没头蝇似的找问题。要知道ffmpeg这个工程的代码量是在百万行级别的。就陈速写那个CLS程序,代码量也还不到一万行。

出来后,陈速看了看贺立强,后者没啥特别的表情,自己就回去了。陈速暗道这个贺立强可够猛的,办事风格就是这么直来直去的啊。不过,陈速隐约觉得,在贺立强那猛大黑粗的外表下,并不是这么简单,应该还有陈速没有看到的东西。至于那些东西会是什么,陈速就不愿去多想了。

从上次开会决定由葛栋山增加tcp推流功能之后,一周左右时间葛栋山就完成了开发工作。陈速不太放心,还看了看他写的代码,发现完成质量还不错。看来葛栋山的基本功还是可以的,干码农的只要底子好,就不怕出不了活。陈速让葛栋山直接找詹季明去提交测试,回头看看效果怎样,要是可以就让雷定宇部署到线上去了。

陈速抽空开始研究郑秋阳交待的HLS协议来。查找资料,研究实例,陈速心里基本上已经有谱了,接下来就是怎么实现的事。凡事不决问谷歌,陈速望空而拜,打开浏览器开始搜索。好消息还是在VLC的网站里,陈速找到一个名为bitStream的ts流解析库,正好可以用来将持续的ts流切分成每10秒一段保存下来。

一个VLC开源项目养活了多少码农们啊,陈速心中充满了对那些无私的开源贡献者们的感激。陈速用了一周的时间写了一个简单的测试工具,它可以从组播地址端口持续收取ts流,并且每隔10秒就生成一个ts文件保存在磁盘上,同时还会更新一个m3u8文件。

陈速晚上在家把程序拷贝到格华的设备里,一运行,果然出来ts文件了。观察一下m3u8文件,也在不断刷新。陈速拿起iPhone 4s,打开Safari,一口气将测试http地址输入进去,确认。一秒钟之后出画面,有声音,流畅播放。一把过,陈速高兴地一扬拳头,抓起座机就给郑秋阳拨了过去。

郑秋阳照例对陈速表示欣赏和佩服,然后就让陈速把这个测试工具发过去,他要写几段脚本代码来调用这个工具。陈速有些意外地问:“郑老师,您还打算亲自写代码来调用这个工具呀?”

“咋地了,不可以呀?” 郑秋阳满不在乎地回着。

“不是,” 陈速有些想笑,“您真的是没别的事可干了么?要写代码来找乐子啊。”

“那咋整,你有兴趣把剩下的工作都做了不?”

“没有,您自己慢慢玩吧。” 陈速果断地挂了电话。

直播回看功能

没过几天,梁江峰过来找陈速问说:“你直播这边有什么工作需要帮忙的吗?”

“目前是没有,” 陈速转着眼珠不想把话说死,“但不知道后续有什么新功能要开发的啊。”

“那你有需要就跟我说吧,” 梁江峰交待着,“咱部门前段时间不是招了俩新人吗,现在点播那边暂时还没有任务,他们正好可以给你帮帮忙。” 梁江峰说完就回去了。

到了下午,林象南捧着Dell笔记本就风风火火地过来了,叫着:“陈工,到会议室来一趟吧,沈阳那边有新需求了。”

陈速赶紧跟着林象南到了会议室,贺立强这会儿已经在座了。这是一次电话会议,那头说话的是刘向荣,陈速闻声心头一震。再看林象南,他冲陈速快速地眨了眨眼,那意思差不多就是兄弟你自求多福吧。

人到齐了,刘向荣就自顾地说上了。陈速听了半天,原来是有的客户反应说有的电视直播节目错过了时间没来得及看上,就想着能倒回去从头开始看,问这样行不行?大家听完面面相觑,好长一段时间谁也不肯开口。林象南没奈何,只得点着名问:“陈工,你看这个在技术上可行吗?”

陈速轻咳了一声,壮着胆子说:“技术上应该是可行,只不过怎么实现我还要再考虑一下。” 听了这话,刘向荣就拿住了这个说:“那太好了,我就知道CDN的同事们个个都是技术专家。那拜托陈工你尽快弄好啊,老板那儿还等着跟客户签新合同呢。拜拜~” 随着刘向荣那拖长着尾音的“拜”字结束,林象南几乎是扑过去挂断了电话。

“陈总,你觉得这事好弄不?” 贺立强先开了口问着,他仔细地看着陈速的脸色。

“我想想啊。” 电话挂断之后,陈速的思路倒还明朗了一些。他脑子里想到了什么,但一直没抓住,所以示意大家先安静一下。

“啊,有了!” 陈速一跃而起,冲到了白板边,拿起碳素笔画了起来。“老贺,你看,” 陈速边画边说,“我这边做一个程序,它可以从CLS获得ts流,然后按每10秒一个小文件保存在磁盘上。每天建一个目录,一天内所有的文件都在这里面。你再想办法把这些文件导入到点播CDN里去,不就齐活了吗?” 说完,陈速潇洒地把笔一甩,坐了回去。

“这指定行,” 贺立强立即就表了态,“只要陈总你能把这个存文件的工具做出来,后面的工作就全交给我了,行吧?”

林象南一看大家伙都这么爽快,也立即趁热打铁,在excel里刷刷地做着会议纪要。因为这属于重大新需求,所以要在初步讨论之后再去让洪武青拍板。随后在洪武青办公室里的讨论也非常顺利,洪武青几乎没有提出什么疑问,他也觉得陈速的解决思路简洁明了,这事大体上就这么定下来了。

但洪武青还是细心地问着:“陈速,你这边研究过怎么对ts流切片保存吗?”

“有的——” 话一出口,陈速就有些后悔,话要是说得缓和点就好了,自己还有富裕的周期可以转寰。但现在只得硬着头皮继续说:“但目前只是做了一个简单的测试工具,别的啥功能都还没有。”

“这个没关系,” 洪武青似乎知道陈速的心思,“可以先在你这个测试工具上实现功能,我们验证一下可行性。就是临时性地用一下,后续有时间再做成稳定的服务。这个就算第一期的任务吧,后面我们看甲方要求,肯定还会有二期、三期的开发。”

陈速闻言只得答应下来。但后来的经历告诉陈速,在软件开发的工作里,从来就没有临时的工具,只要上了线并且管用,那就是会一直用下去的。

最后洪武青强调说:“既然现在直播业务也已经上线,我们就要按照正常流程来走了。之前是因为上线时间紧,我们是非常时期非常办法。接下来,所有的工作都要先落实到设计上,经过评审确认后才可以继续开发工作。测试完成以后也要提交测试报告,我签字以后才能上线部署。象南,你要把设计评审通过设置为里程碑节点,知道吧?”

林象南闻言立即满口答应下来。陈速也点头表示明白,并且表态会配合好项目经理的工作。

很明显,陈速解决这事的灵感来自于郑秋阳让他做的,就是那个实现HLS协议适配iOS播放的功能。既然按10秒切片保存的功能已经有了,那再按天保存不删除就是水到渠成的想法了。陈速觉得这是一件很神奇的事情,因为从郑秋阳那儿事先研究出来的成果,在公司这里居然都能派得上用场。

当然,这并非是郑秋阳未卜先知,知道陈速将要做什么,从而走在了他的前头。其实格华的需求是真实的,并不是郑秋阳虚构出来的。事情的缘由还在于,格华隶属广电体系,他们虽然拥有有线用户,但迫切地也想获得互联网用户;而沈阳电信则相反,他们有基础设施,但却需要内容来吸引宽带用户。于是这就变成了广电想干电信的事,电信也想干广电的事,两头一碰全在陈速这儿汇集了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值