Flutter浪潮下的音视频研发探索

前言

现在市面上的图像,音视频软件越来越多,最近两年也是直播,短视频的红利期。抖音的火爆,不仅意味着垂直短视频可以获得爆发式增长,综合平台嵌入短视频,更能极大提高用户活跃度。因此掌握并熟练运用音视频、图像技术已经是当前互联网时代不可或缺的技能,而且这个技能是具有沉淀性质的。
本次分享的主题是 Flutter 浪潮下的音视频研发探索,首先对 Flutter 做一个简单介绍以及选择 Flutter 作为跨平台框架的原因

一、Flutter

极速构建漂亮的原生应用
Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。
快速开发
Flutter的热重载可帮助您快速地进行测试、构建UI、添加功能并更快地修复错误。在iOS和Android模拟器或真机上可以在亚秒内重载,并且不会丢失状态。在这里插入图片描述
富有表现力,漂亮的用户界面
使用Flutter内置美丽的Material Design和Cupertino(iOS风格)widget、丰富的motion API、平滑而自然的滑动效果和平台感知,为您的用户带来全新体验。
在这里插入图片描述
现代的,响应式框架
使用Flutter的现代、响应式框架,和一系列基础widget,轻松构建您的用户界面。使用功能强大且灵活的API(针对2D、动画、手势、效果等)解决艰难的UI挑战。

1class CounterState extends State<Counter> { 2 int counter = 0; 3 4 void increment() { 5 // 告诉Flutter state已经改变, Flutter会调用build(),更新显示 6 setState(() { 7 counter++; 8 }); 9 } 10 11 Widget build(BuildContext context) { 12 // 当 setState 被调用时,这个方法都会重新执行. 13 // Flutter 对此方法做了优化,使重新执行变的很快 14 // 所以你可以重新构建任何需要更新的东西,而无需分别去修改各个widget 15 return new Row( 16 children: <Widget>[ 17 new RaisedButton( 18 onPressed: increment, 19 child: new Text('Increment'), 20 ), 21 new Text('Count: $counter'), 22 ], 23 ); 24 }} 25 26

访问本地功能和SDK
通过平台相关的API、第三方SDK和原生代码让您的应用变得强大易用。 Flutter允许您复用现有的Java、Swift或ObjC代码,访问iOS和Android上的原生系统功能和系统SDK。
访问平台功能非常简单。以下是interop example(互操作示例)中的一个片段:

1Future<Null> getBatteryLevel() async { 2 var batteryLevel = 'unknown'; 3 try { 4 int result = await methodChannel.invokeMethod('getBatteryLevel'); 5 batteryLevel = 'Battery level: $result%'; 6 } on PlatformException { 7 batteryLevel = 'Failed to get battery level.'; 8 } 9 setState(() { 10 _batteryLevel = batteryLevel; 11 });} 12 13

了解如何使用 packages, 或编写 平台通道, 来访问原生代码、API、SDK。
统一的应用开发体验
Flutter拥有丰富的工具和库,可以帮助您轻松地同时在iOS和Android系统中实现您的想法和创意。 如果您没有任何移动端开发体验,Flutter是一种轻松快捷的方式来构建漂亮的移动应用程序。 如果您是一位经验丰富的iOS或Android开发人员,则可以使用Flutter作为视图(View)层, 并可以使用已经用Java / ObjC / Swift完成的部分(Flutter支持混合开发)。
构建漂亮的用户界面
1.丰富的2D GPU加速API
2.响应式框架
3.动画/运动API
4.Material组件和Cupertino widgets
流畅的编码体验
1.亚秒级,有状态的热重载
2.IntelliJ: 代码重构、补全等
3.Dart语言和核心库
4.包管理器
全功能的应用程序
1.与移动操作系统API和SDK交互
2.Maven/Java
3.Cocoapods/ObjC/Swift
优化/测试
1.单元测试
2.集成测试
3.设备上测试
调试
1.IDE 调试器
2.基于Web的调试器
3.async/await aware
4.Expression evaluator
性能分析
1.时间线(Timeline)
2.CPU和内存
3.应用内性能图标
部署/编译
1.Native ARM 代码
2.Dead code elimination
发布
1.App Store
2.Play Store

二、Flutter实战演练

目前市面上的学习资料参差不齐,想要开启音视频的学习之路,了解完Flutter构建应用方面的基础原理优势特征,接下来就是项目实战。由于篇幅问题,就不仔细介绍Flutter编码语言、框架原理、构建漂亮的app。下图是Flutter项目实战的教学大纲,想要获取Flutter技术资料,解决音视频开发过程中遇到难题的程序员可以关注+评论 Flutter获取教学视频。在这里插入图片描述

三、后续展望和规划

1、实现开头所说的从底层 SDK 到 UI 的全链路的跨端开发。目前底层框架层和模块层都是各个平台各自实现,反而是 Flutter 的 UI 端进行了跨平台的统一,所以后续会将底层也按照音视频常用做法把逻辑下沉到 C++ 层,尽可能的实现全链路跨平台。
2、第二部分内容为开源共建,闲鱼开源的内容不仅包括拍摄、编辑组件,还包括了很多底层模块,希望有开发者在基于 Flutter 开发音视频应用时可以充分利用闲鱼开源出的音视频模块能力,搭建 APP 框架,开发者只要去负责实现特殊需求模块就可以,尽可能的减少重复劳动。

代码交流 2021