关于 TWeb Conf | 腾讯 Web 前端团队在蓬勃发展的这几年间,先后举办了一系列业界顶尖的 Web 前端技术大会,不断地输出业界前沿的标准以及最优的前端实践,希望能跟千千万万的前端开发者一同推动行业的发展。无论您是资深的前端大咖,还是初出茅庐的前端菜鸟,相信都可以通过10月24日举办的TWeb大会获得收益。期待与您一起进行技术的交流和碰撞!
| 扫码享讲师专属福利 |
牛赞:
腾讯前端高级工程师,2015年毕业后加入腾讯,先后负责过王者荣耀竞猜、QQ会员等业务。现就职于腾讯云音视频团队,主导开发设计了TRTC Flutter sdk 和 TRTC Unity sdk。在10月24日举办的腾讯TWeb 前端技术大会上,牛赞将分享利用Flutter如何进行实时音视频渲染,并深入底层,优化视频渲染的性能。
以下是对他的访谈实录。
访谈内容
Q1 是什么样的机缘巧合促成你深入音视频领域?
因为疫情的缘故,实时音视频越来越融入到人们的日常工作生活中,如线上会议、在线教育等。对于中小企业来说,迫切需要一个跨终端框架来解决人力成本。我们团队嗅到了这块的机会,运用Flutter这一近两年大火的跨终端框架,提供Flutter版本的音视频sdk,帮助这些中小企业快速拓展线上业务。
Q2 当初为什么会选择Flutter作为主要的开发技术栈?如何看待它的现状与未来?
随着跨平台技术的不断发展,无论是最早的跨平台技术Hybrid App,再到ReactNative、Weex等框架,都和App端有或多或少的差距。为了解决性能瓶颈,google开源的Flutter出现了,它自带渲染引擎,可直接编译成原生代码,性能优异。它的上手门槛也并不高,组件/状态管理的很多思想其实借鉴了React。除了支持移动端、它还支持了桌面端和web端,目前star数已经远远超过了ReactNative,带给了我们更多的想象空间。
Q3 在对 Flutter 音视频开发实践的过程中,有遇到什么困难吗?
开发实践中最大的困难在视频渲染的优化上: 最开始我们是采用PlatformView来渲染视频的,也就是把视频嵌入到Flutter中进行渲染,但发现GPU消耗比较高。于是我们仔细研究了PlatformView实现的原理,其实对于安卓来说,PlatformView的底层也是用外接纹理来渲染的。只是它中间多了一层附加的图形缓冲区,这使得原生sdk视频view的每个像素都流经中间图形缓冲区,浪费显存和绘图性能。于是我们就思考:是否可以将视频帧数据直接输出到画板上? 最终优化后的渲染架构可以先从下图中窥见一二:
举个例子,如有远端用户进房并通过我们的云服务,我们本机收到这个进房信号,调Flutter sdk发出开始拉流指令。这时候原生sdk会把视频帧纹理数据一帧帧回调出来,通过opengl绘制到SurfaceTexture画板里面。Flutter最终拿到的是通信层返回的一个textureId。这个textureId是在原生侧绘图数据对应的ID,通过这个ID可以直接在GPU中找到相应的绘图数据并使用。
目前Flutter在windows、macOS平台都已支持音视频通话,屏幕分享等功能正在支持;Flutter web端也在beta中,后续开发者可实现一套代码编译Android、iOS、windows、macOS、web多平台应用。
Q4 疫情期间,腾讯云提供的 Flutter 音视频 SDK,是如何帮助到中小企业拓展线上的业务呢?
因为去年疫情的影响,许多线下业务迫于疫情无法营业,不得不把线下场景业务搬到线上,直播/教育场景需求量大增。使用TRTC(Tencent Real-Time Communication,腾讯实时音视频—编者注) sdk,再结合我们的场景化方案,可以快速上线一个音视频场景的应用。以我自己所在的团队而言,我们帮助腾讯游戏成长守护平台快速搭建了青少年直播功能,引导青少年健康游戏。
此外,我们团队也努力帮助各行各业在疫情期间将很多原本在线下的业务搬到了线上,如智联招聘、 潭州教育、YELL直播等一系列创新型应用的落地,进而服务于受疫情影响的求职者、学生等群体。
Q5 对于Flutter技术的初学者,你有什么样的建议?
官方文档是最好的老师,它会把Flutter框架的底层原理都介绍的很清楚,还提供了代码实践。Dart 也是 Flutter 的基础。Dart 作为 Flutter 应用程序的编程语言,为驱动应用运行提供了环境。下图能更好帮助你了解Flutter的技术框架:
Q6 如果作为工程师,想要深耕音视频领域,需要提前做什么样的准备呢?
音视频领域涉及到的知识太广泛了,功能基本上可抽象为采集、处理、编解码、封装解封装、传输、渲染等。我们可以围绕以下模块来拓展学习音视频知识:
| 扫码报名参会 |
腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备 RT-ONE™ 全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并以 All in One SDK 的创新方式为客户服务。腾讯云音视频为全真互联网时代,提供坚实的数字化助力。