客户端播放器兼容性有问题
黄云鲲一回来,林象南就叫上了陈速、钟展鹏一块儿到洪武青办公室开会。这个问题主要由陈速来描述,钟展鹏在一边进行补充。问题说明白以后,大家就都看着黄云鲲了。
“这个问题,” 黄云鲲习惯性地扶了扶深度眼镜,“很明显是客户端播放器解析ts流有问题的嘛。因为同样的数据在VLC播放器里是没有问题,对不对?”
“这个是没错,” 陈速决定接下这个话茬,“但点播那边用的也是同样的客户端播放器吧?”
“是,不过点播的文件格式不同,是mp4格式的。” 黄云鲲回忆着点播的那套环境。
“h264视频编码是一样的?” 陈速再对视频编码格式发问。
“这个是一样的,其实也略有差别,主要为了照顾直播编码的实时性。但只是在个别参数上有微调,算法都是一样的。” 黄云鲲的回答让大家明白视频编码的问题可以排除了。
“那问题还是出在ts封装格式上了?” 陈速其实大概知道问题出在什么地方,但现在他只想能尽快解决问题。这么问的话,等于就是说问题全在黄云鲲那边了。
“不对,” 黄云鲲皱了皱眉头,“我刚才就说过了,是客户端播放器对ts格式的兼容性有问题。所以现在应该想办法解决客户端的兼容性问题。”
陈速明白这是黄云鲲又把问题踢给客户端,对黄云鲲的态度,陈速心里也只能是暗叹了口气。因为客户端那边根本没有播放器的解码研发人员,只能使用系统默认播放器。如果黄云鲲一味推托,这事就只能僵在那儿了。
这时候洪武青开口了:“云鲲,我问一下啊,你实现的ts格式和标准规格文档的定义是一样的吗?”
陈速暗暗佩服,看来洪武青在这段时间里真是恶补了不少音视频流媒体的技术,了解到ts格式其实是有通用规格说明文档的。
“当然一样,” 黄云鲲信心满满,“我当初就是在VLC上调试并播放流畅的。”
“那你现在能不能在客户端的播放器上调试一下看呢?” 洪武青试着提出了一个解决办法。
“这个比较难,” 黄云鲲对洪总没有把话说太死,“VLC毕竟是开源播放器,哪里卡壳了,我可以直接看代码来查问题。但咱们这个盒子的播放器源码是没有的,如果只能看系统日志来调试,那我也不知道要弄多久才能好。”
在场众人听了这话都默然不语,陈速这会儿也明白了黄云鲲为什么要一直把问题推给客户端了,因为他自己就料到这事不好办。
洪武青也沉默了好一会儿,开口说:“这样吧,云鲲你还是辛苦一下。因为我们客户端这边钟展鹏他还解决不了解码的问题,只能是你这边配合他想想办法把兼容性再调一调,你看行吧?” 话已至此,黄云鲲自然不好再说什么,便答应了下来。洪武青便示意众人散去,单把钟展鹏留了下来。
出了洪武青的办公室,陈速心头沉郁不已,真不知道该怎么办才好。这会儿又多了一个坑,看黄云鲲那百般推托的态度,陈速心里真是一点底也没有。
不定期就会崩溃
陈速花了一周时间,总算是把基础库给改好了。说是改,不如说是重写,也是因为之前时间匆忙,代码写得问题重重。陈速痛定思痛之余,时间再紧也不敢马虎,所以重写了这一版。陈速用新基础库替换了自己的程序之后就赶紧让詹季明测上了,这边也提交给肖平安去替换。
没想到,肖平安竟然说他的程序可以提交测试了,陈速觉得这迟来的好消息也比迟迟不来要好吧。不过,肖平安的程序刚提交运行就出现崩溃的现象,甚至詹季明还没来得及看一眼日志输出。陈速倒觉得没什么好奇怪的了,现在还有什么事不能发生呢?
从那之后,詹季明就频繁地往来于他自己的工位和肖平安的工位之间。肖平安的程序最好的时候可以运行两天,差的时候半天就挂。而肖平安的解决办法就是在程序中加入更多的调试打印语句,然而出问题时,日志都没有显示出异常。肖平安给詹季明的建议也一直是“把程序再起来运行一下看看”。
梁江峰看詹季明天天往这边跑,找肖平安说测试的问题。于是他悄悄地过来问陈速:“肖平安那边到底是什么问题,你清楚吗?”
“好像是不定期就会崩溃。” 陈速也问过肖平安,但他的回答就是代码没看出问题,但运行不知怎么就出错。
“你要帮他一块儿看代码呀,” 梁江峰似乎都有些急了,“我早就说过直播传输这项目是你们两个人一块儿弄的,他那边没进展,你这边做的再好又有什么用?”
这话听着已经很严厉了,陈速脸上也有些挂不住了,赶紧应道:“行,我现在开始看平安的代码吧,我也一块儿调。有结果我会及时告诉你。” 就这样,陈速找肖平安要了svn地址,把他的代码下载到了本地。
肖平安所有的代码只有一个.c文件,这让陈速已经有点惊讶了,再用编辑器打开之后看下来,陈速的内心就完全崩溃了。肖平安所有的功能全写在main函数中,代码没有任何组织,那些在设计文档里洋洋洒洒的各种说明,只体现在眼前这一团乱麻似的近1000行代码里。
公司的核心部门开发人员就这水平?就是在大学期间,做工程实践的时候陈速也会尽量有些层次,虽然做得挺烂,但眼面前的却是完全没有。陈速很好奇,当初肖平安是怎么在钟亚伟那寒电般的目光下通过面试的。但现在能怎么办呢,陈速只能硬着头皮开始逐行阅读代码吧。
就为肖平安的这些代码,陈速连着几个晚上都在拼命加班,也帮他找出了几个内存溢出的问题。陈速真心建议肖平安先把功能层次划分好,再有组织地自顶向下来实现功能。为此陈速还专门写了些框架代码提交进去,但往往第二天肖平安就从svn里把陈速的代码删除了,只保留他自己那一个孤零零的文件。渐渐地,陈速也就不太管这事了。
谁不是一堆事呢
现在项目进展上来说,黄云鲲负责解决客户端播放器的兼容性问题,直播传输则卡在肖平安的中转服务程序不稳定上。钟展鹏的工作从理论上来说就是等待黄云鲲调试完成,还有跟肖平安的程序进行对接。因此钟展鹏几次找到肖平安,希望能尽快完成对接工作,这样他那边好进行下一项工作。
那天,钟展鹏又走到CDN部门这边来,陈速知道又是来找肖平安的,也就没起身。就听钟展鹏问上了肖平安:“肖工,你好,你这边程序什么时候能弄好?”
“还有问题,正在调着呢。” 肖平安戴着耳机,一边看着笔记本电脑屏幕,头也没抬。
“那你这边能快点吗?” 钟展鹏语气仍然十分客气,“我那边还有一堆事等着我呢。”
没想到,肖平安猛然抬头,并爆了一句出来:“谁不是一堆事呢!” 语毕,肖平安可能也觉得自己的火气有点大,又降低了一些声音说:“我这边不也一直忙着吗?你再等等吧。”
“好吧,好吧。” 钟展鹏刚开始显然有点懵,一时说不出话来。后来看肖平安这么说也只好无奈应着,不过他没有马上离开,而是过来找梁江峰又悄声说了一番话。钟展鹏回去了之后,梁江峰过来叫上陈速来到肖平安身旁,问着刚才的情况。
肖平安只是说程序还不稳定,需要再观察观察。梁江峰问着陈速说:“陈工你帮平安看过代码了吗?”
“看过了,也修复了一些问题。” 陈速实在不愿意去回想肖平安写的代码。
“那现在不稳定是什么原因?” 梁江峰今天打算把问题搞清楚。
“应该还是长时间运行之后,会出现内存溢出的情况。” 这是陈速的推测。
“那平安你在代码里加了调试信息没有?” 梁江峰又转向了肖平安并发问。
“加了,都加了,我这天天看着呢。” 肖平安竟也满腹委屈。
“那肯定是还有哪里没想到,平安你得多考虑一下我跟你说过的那些地方。” 陈速忍不住补了一句,没想到这一句又让肖平安炸了。
“你的程序就没出过问题吗!” 肖平安脱口就吼了这么一句。陈速当下觉得甚是没趣,一句话也不想多说了,扭头就要回自己工位。梁江峰叹了口气,拉着陈速到楼下放风去了。
“梁工,你看过肖平安的代码了吗?” 陈速这回不打算那么客气了。
“看过,” 梁江峰也是满面愁容,“我明白你的意思。以前都是交待肖平安做一些模块级的开发,就是实现一个具体的功能,那还好说。这回是他第一次做一个完整的服务程序,所以很多地方没想到。”
“原来是这样。” 陈速嘴里这么应着,其实并不太能接受这个解释。
“你的水平比他要高,” 梁江峰这会儿的语气有些苦口婆心一般,“所以你要多帮帮他,现在项目催得紧,他这也是着急。”
“我当然想帮他,” 陈速也是满腹的牢骚,“但也得我说话他愿意听吧,是不是?”
“是,所以你也别往心里去。我还是相信你的职业态度的。” 梁江峰有些担心地说。
“这是什么话,” 陈速倒是一口喷出笑来,“我哪能拿这事开玩笑,这个你放心吧。” 陈速转头看见不远处贺立强在向他眨巴眼,于是陈速对梁江峰说:“梁工,我去跟老贺他们抽一根儿,你去不去?”
“哦,不了,你去吧。” 梁江峰说完就进楼里去了。陈速知道梁江峰不抽烟,所以故意这么问来着。
“陈总,忙完了没呀?” 贺立强一边说着一边就远远地打了根红塔山过来。陈速一把接住,自己点上火了。
“唉吗呀,要了命这事儿。” 陈速也是叫苦不迭。
“你那边真的要赶紧了,兄弟 。” 贺立强面色严峻,陈速一看他没有开玩笑的意思,心下便有些紧张,忙问着:“怎么了?”
“我跟你说这事,你别跟人说去,” 贺立强这会儿压低声音,语速很快,“今天洪总找我了,他让我有空看看现在市面上现成的直播系统。这意思你能明白不?”
这意思就是项目要黄,洪武青打算买现成的了。陈速紧皱眉头猛吸了一口,只见烟头瞬间就缩短了一截。贺立强的语速更快了:“兄弟,跟你说句掏心窝的话,这事对我一点影响没有,反正用你们开发的也是用,用买来的也是用。但有件事你可能不知道,如果采购全套直播设备,技术上是钟展鹏全权负责,我们还是干维护。”
陈速“嚯”地抬头直盯着贺立强,后者也正目光如炬地望着他。陈速把烟头猛扔脚下用力踩灭了,借着这个劲他稍稍平复了一下心情。此时,陈速心里已经有了计较,便对贺立强说:“强哥,我明白了。我也希望这事儿最好能落在自己手上。就算买来了设备,你这边又有多少事要维护的呢?反正有厂家给管着不是。”
“可不就是这意思嘛,” 贺立强一拍大腿,“我就知道陈总你是明白人。废话我也不多说了,就说你需要我这边做什么,我绝对不说二话,成不?”
“没问题!” 陈速决定不能再将直播项目这样做下去了,他要改变现状,从困境中走出来。