爱因儿科技|前端工程师后端转型实录( 二 )


我觉得难点往往不在于项目的结构设计 , 而在于细节实现 。 项目的结构设计会随着经验和知识的增加有新的认知 , 也会趋于完善 。 但实现细节上的难点 , 有时确实比较难 。
比如前些时候 , 在开发MediaTrack的标记功能的时 , 最初忽略了视频的starttime转码流和原视频的starttime经常出现不一致的状况 , 这就造成了标注的时间点误差 。 这时 , 我将转码流和原视频的starttime纳入到时间点计算中 , 发现误差依然存在 。
联系到之前做H5播放器的一些经验 , 在实际播放过程中 , 为了减少首屏时间 , 视频的首个PTS通常会和音频首个PTS取一个最小值 , 然后每一帧做PTS矫正 。 此时在用户界面上的starttime应该是矫正之后的 , 又经历了一次修改之后 , 时间戳才趋于准确 。 当然 , 这是帧率固定的情况下 。
有些用户上传的视频资源并非从工作栈中获取的固定帧率视频 , 比如从直播视频中截取 。 这些视频经历了第三方转码后 , 很多情况下就是非固定帧率 , 使用FPS计算得出的帧的时间戳并不准确 。 这时 , 需要记录实际的帧的时间戳进行换算 。 而用户的视频源文件和MediaTrack的转码流的帧情况也存在着差异 , 需要分别换算准确的帧数 , 在标记时进行显示 。
爱因儿科技|前端工程师后端转型实录
文章图片
LiveVideoStack:近几年您遇到的最大的困难是什么 , 以及您是如何坚持下来的?姜雨晴:应该是身体原因吧 , 由于常年高强度的对比视频的一些细节 , 造成几次角膜炎症 , 现在角膜有损伤 。 其实长时间做音视频类的开发工作挺困难的 , 尤其是端的音视频展现 。 不过还是比较喜欢这个领域的开发 , 所以现在会接手不少后端开发 。 塞翁失马 , 真正开始后端开发的时候 , 会发现之前不少前端播放器开发时候困扰的问题 , 在开发后端时 , 得到了解答 。
LiveVideoStack:在您的技术进阶之路上 , 给您启发最大的是什么?姜雨晴:应该是在熊猫直播的研发经历吧 。 在到熊猫之前 , 其实并不是前端工程师 , 虽然在猫耳的时候也负责前端的播放器编写 , 主要业务还在小型网站的整站建设上 。 那时候比较想做“用户看得见的东西” 。
真正到了熊猫开始专门搞前端开发之后 , 期初也就是学习JS的一些语言特性 , 前端的设计模式等等 。 当时的领导对于前端项目要求非常高 , 每一个细节都会要求 , 小到一像素的对齐 , 大到每个模块的内存占用、渲染效率等等 。 不仅是实现 , 还需要考虑用户和主播浏览页面时的电脑运行状态 。
例如主播需要打游戏、推流 , 那么弹幕渲染就不能占用太多的GPU性能 , 否则会影响主播的游戏渲染 。 这个时候才发现 , “用户看到的东西”仅仅停留于表层 , “用户觉得好用”则需要我具有更多的知识储备 , 并且真正花时间去推敲代码 , 每行代码每个细节都可能对最终的体验产生影响 。 在这之后 , 我才开始当一个”真正“的程序员 , 深究代码背后的东西 。
Q
如果此时此刻您可以做任何事、可以成为任何人 , 您最想做什么、最想成为什么样的人?
“其实这个问题自己也想过很多次 , 但是答案其实一直都是 , 我最想成为的还是现在的自己 。 大约14、15年的时候 , 在校期间曾经很想成为专业的内容创作者 , 学习了不少视频制作的专业软件 , 专业知识 。 这几年在平台 , 在MediaTrack接触了大量的内容创作者之后发现 , 他们每个人都有很多奇思妙想 , 但是真正能表达出来 , 展现给观众 , 且观众买账 , 又是另外一回事儿 。
从在熊猫直播、字节跳动优化视频播放 , 到现在在MediaTrack开发生产力工具 , 其实都是在助力视频创作者做出更有价值的内容 。 如果当初真的成为了职业的内容创作者 , 也只能是表达我一个创作者脑中的想法 , 如今却可以帮助更多的创作者表达他们的思想 。 我认为是比成为内容创作者更有意义的事 。 所以对于自己的现状还是很满意的 。