研究生的第一个假期作业终于在今天结束了。
寒假作业评比一共三轮,一共7个组,我们拿到了第一名,小组奖金900元
虽然金额不大,也算是没有辜负我们组所有人这么长时间花费的努力。
所以,简单记录一下这个寒假的工作吧~
接收到任务
1月10号学校放假,那时候新型冠状病毒还并不是一个新闻。我以为这又是一个枯燥的寒假。
本来我们的寒假期间是1月10号~2月5号(正月十二)
所以虽然我们腊月都感到截止日期的逐渐逼近,但我们还都是心照不宣的不讨论寒假作业这件事情。
到了正月初四,组长终于开始意识到“问题很大”。于是组长贴心的下午两点叫我们起床,开工。
那个时候虽然只是听说疫情挺严重,学校的通知也只是正月15之前禁止到校,但谁也不知道疫情竟然已经如此严重了,延迟开学居然延迟3月份还未能开学。
1月28号,正月初四,如果按照既定的时间截止的话,时间已经很紧急了,但是我丝毫没有开始写代码的欲望,甚至还有一种莫名的自信。
但是组长的任务安排也都是有更近的截止时间,所以每天下午3点左右简直就是灵魂拷问时间啊
2月4号之后,公司那边要求2月7号提供项目目前的进度报告:
所以我们必须在2月6号左右就得完成一个大概的初始版本。也就是至少客户端可以直播对话。
需要认真起来了
然后这个时候,我对整个项目的流程都不是很清楚,拉流推流啥意思。recorder、grabber是啥。player、client、capture关系又是什么,我真的不太清楚。
关于我们这次视频会议,公司之前在直播这方面有所研究,一直开发维护theia项目,这个项目的功能就是主播直播,观众观看、发弹幕、连线之类的。
不管怎样,到了2月7号晚上我们基本有一个可以用的版本了。
界面啥的基本都是沿用theia项目,我们为了简化流程,客户端拉流的只拉了一个多个用户的混合流。
就这样有一周暂时没怎么写寒假作业,2月15号我觉得学一下javafx,重新写一下客户端这边界面,现在的界面颇有一股复古的气息。
界面重构以及流程梳理
本科的时候用netbeans写过java的桌面端程序,netbeans是可以直接拖控件就创建好界面的。现在使用Scala+javafx,于是学习了screnbuilder的用法还有jxml的用法,以及在网上找到了一个Scala+javafx的helloworld demo。
到了19号我基本把界面重构出来,也把整个客户端的流程重新设计了一下,整个client模块我基本是重新写了一遍。
到了2月25号的时候,对照寒假作业的要求,发现我们还有一些功能没有完成:
这几个功能让整个会议的功能变得复杂了很多。
除此之外,之前client只拉一个混合后的流的做法虽然简单,但是问题是显而易见的,延迟太高,5、6s左右,而且用户自身的画面和声音在混合流中,都有延迟,就很奇怪。
所以,最后我们还是决定客户端拉多个用户的流,这样问题是增加了客户端这边的内存开销,但是效果是延迟更低,会议效果会更好。
不仅如此,在最后的几天根据发言人、支持人身份对客户端的画布进行动态分配。
写代码是一回事,等真正一起联调测试的时候,bug就是一个个的浮现水面了。
准备最后的评选
2月28号,我们开始了第一次测试,当时由于我开了全局代理,导致 new Image(url)
这个地方无法对图片进行加载,以至于我一打开会议界面就卡死了。所以第一次测试只有我们组的另外两个人。
当时测试问题还比较少。到了29号晚上3个人测试,问题就变得特别多,不仅客户端这边,后台那边对ws消息的处理也有一些问题。
3月1号下午我们又开始了测试,这才基本没什么影响使用的大功能了。
3月2号开始了第一轮评比,7进3,我们录制一个4~5分钟视频发到视频网站上,然后研二的学长学姐们评比
3月4号上午开始第二轮,3进2,同样是录制一个1~2分钟的视频发到视频网站上,然后参赛其他组评比
3月4号下午开始进行第三轮,2进1,是参赛其他组直接观看web端的录像(混流后的)进行评比。
由于我们客户端界面好看,第二轮我们录制的视频还特意做了一个小剧本,配上朱一旦的「完美搭档」的bgm,第三轮我们web查看的录像的混流效果很好,延迟较低,而且音画基本同步。
所以最后,我们拿到了第一名。
从一开始我们感觉好像来不及,到最后我们每个人都是朝着第三轮的目标开始完善自己的部分。
也算是没有辜负我们的努力吧~
最后的完成的界面:
同时还有web端可以查看和管理录像。
相关技术和工具:
- scala
- javafx
- srs 流服务器
- ffmepeg
项目地址:https://github.com/HiddenTrackMJ/geek
有兴趣欢迎star,fork~
21 条评论
这个项目怎么用 是什么语言开发的呀
你们组长可爱了
我们组长很强,可不可爱就不知道了
第一名才900元嘛。。。ヾ(´・ ・`。)ノ"
公司扣啊 现在也是压榨我们劳动力
大佬,回不去喽
在家一个样 该给学校打工也跑不掉
太羡慕大佬了
大佬就是大佬
大佬好厉害呀
有意思,想起来当初和大学同学从0搭建校园论坛的场景OωO
大佬我想问问右边那个滚动条怎么自定义的呀,感觉默认的好丑。
javafx可以写css
Cool! 你们组长这句 起床写代码辣不要装做看不见 太彳亍了哈哈哈
下午该起床了
很酷!
学弟们强的呀|´・ω・)ノ
学长也是一组的吗
此处应有掌声
大佬tql
厉害。