我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

flutter音频插件,flutter 播放器插件

Flutter插件开发

Flutter插件是Flutter调用原生能力的一种解构方式。

十年的大丰网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整大丰建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联从事“大丰网站设计”,“大丰网站推广”以来,每个客户项目都认真落实执行。

Flutter 会通过 MethodChannel 将数据传递给 iOS/ Android ,反之 iOS/ Android 也可以通过 MethodChannel 将数据传回给 Flutter。

在Flutter工程根目录创建plugins目录,在plugins目录下执行下面命令:

Flutter-Native

Native-Flutter

flutter 插件开发

new flutter project,选择Flutter Plugin,next,输入插件名,包名,运行平台及编写语言,finish!

如上图,笔者的插件名为log_plugin,选用Android,java语言开发

在自动打开和插件名同名的dart文件,声明要使用其他语言的方法,本例使用java 语言实现Android原生的log输出

编辑 android/src/main/java/com/whh/log_plugin/LogPlugin.java

在onMethodCall方法中,区别声明方法名,以实现该方法逻辑

至此,简单的插件开发完成,接下来测试

example是插件测试工程,打开其中的main.dart

打开已有的或者新建一个flutter app project,在其pubspec.yaml引入插件

使用pub get 关联到插件

详见官网文档

此文为 flutter 初学者记录学习过程,附上 github ,小小分享~

每天进步一点点。。。(2021-08-10)

Flutter插件汇总,总有一个用得着, 已收录:100+

❀ ❀ 尽可能收集好用的插件以便更快的开发效率,85%亲测,持续添加中

如果有好的插件或者建议,可以直接评论 ❀❀

Github地址:

文章源地址:

br /

???????? 尽可能收集好用的插件以便更效率的开发,85%亲测,持续添加中

br /

br /

如果有好的插件或者建议,可直接提Issue 感谢您的分享 ~ ❀❀

br /

br /

掘金文章地址:

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

br /

Flutter视频播放器,简洁!

注:亮度调节和音量调节gif无法体现,功能是ok的,其次默认Icon锁的close和open实在难以分辨。

环境:Flutter 2.8.1 channel stable ;Dart 2.15.1

需要音频播放器的看这里: Flutter音乐播放器

重点说下这个工具类,因为视频播放,涉及到状态改变有很多,笔者刚开始选择使用 InheritedWidget 来在众多的widget之间共享数据。但是总感觉这样有点繁琐,且不很优雅!

这里非广告,如果是使用 GetX 就很简单了,笔者也使用了 GetX 进行封装了,一泻千里的赶脚!,但是笔者还是那句话:刚开始接触Flutter的开发者不是很建议使用 GetX ,可以先熟悉下Flutter状态管理的基础原理再行使用。而且为了尽量简洁,还是不引入其他的第三方了。

我们选择对第三方插件进行封装的目的不外乎这几个:

于是笔者就写了一个工具类 VideoPlayerUtils ,专门且只用来处理播放器的所有业务。包括暂停、播放、跳转、调节音量、调节亮度、切换视频等操作。在所有的widget中不会引用关于 video_player 或其他第三方插件的任何信息, VideoPlayerUtils 负责widget与播放器之间的所有操作交互。后续优化迭代或更换播放器插件时,只需针对这个工具类进行修改,对所有widget不会有任何的影响,大大的解耦合了。

其中 VideoPlayerState :

提供以上的公共属性,可以通过 VideoPlayerUtils 来获取对应的值,使用 get 只读,使外界不会误修改这些属性,以保证数值的安全性。开发者可根据自身需要自行添加属性。

提供以上方法来处理播放器的所有业务。同样的开发者可根据自身需要自行添加或修改。

重点说下这个方法,是整个业务的核心方法,控制视频的播放或暂停。开发者只要遇到播放或暂停是均可调用此方法,具体是播放或暂停,内部根据传入的 url 自行判断,开发者不需要关心。

切换新视频也是使用此方法,传入的 url 与上次不一致,自动切换新视频。笔者可根据 statusListener 来监听播放状态的改变,以此处理自身逻辑。

这个也需要提下,视频播放器在播放新视频时会异步初始化,一般我们的操作是在 initState() 初始化,成功后再 setState() 。这里笔者遇到一个让人蛋疼的问题:

我们看 video_player 的使用:

VideoPlayer(controller) :widget中已经持有了controller。本来笔者封装的目的就是为了让widget与controller的之间解耦合。但此时的笔者。。。。

放弃不是不可能放弃的,这辈子都不会放弃的!

于是笔者取了巧,写了一个初始化监听器 initializedListener ,包换2个参数: bool,Widget ,初始化是否成功;其中widget为初始化成功返回需要展示的播放器UI,失败默认返回 const SizedBox() 。

到这里就可以简单使用了:

没看错,视频播放就是这么简单。

如果有更多的业务功能,笔者也按照自己的需求写了一套,同样的开发者可根据自身需要自行添加或修改。

VideoPlayerGestures 主要是处理手势的,比如快进、快退等跳转播放;左侧上下滑动调节亮度;右侧上下滑动调节音量;单击是否开启沉浸式播放,所有widget的隐藏与显示;双击播放、暂停等。

哦,还有 PercentageWidget 也放到这个文件下了,就是这玩意:

因为显示的百分比与手势相关,随着手势移动而更新。开发者可自行处理。

笔者处出于简单考虑,就按照整个UI的位置命名了。瞅一眼就知道是啥玩意。

同样的开发者可根据自身需要自行添加或修改。

就是这玩意:

同样的开发者可根据自身需要自行添加或修改。话说这个锁的 Icon 的open和close是真的难分辨!

就是这玩意:

同样的开发者可根据自身需要自行添加或修改。

这玩意是自定义的,别问,问就是跟产品干一架落了下风

主要就是自定义这玩意:

同样的开发者可根据自身需要自定义。

注:这里没有添加缓冲的进度,开发可查看 video_player 中的源码 VideoProgressIndicator ,按业务自行定义。

这玩意就是整合以上的widget,再考虑下全屏的安全区域,没啥东西。开发者可自行处理!

具体的实现监听器的思路, 看这里 。

自此一个漂亮的Flutter视频播放器就已经结束了。如果您觉得对您有些许帮助的话,欢迎 Star !

Flutter 音视频处理FFmpeg

只能说 Flutter 确实很强大

ffmpeg 插件,文档没给出如何给视频添加水印, 但是给出了执行命令的方法演示, 这就足够了。

添加一个水印:

String command = "-i " + inputVideoPath +

" -i "+waterMarkPath+" -filter_complex overlay "+

outVideoPath+"";

添加多个水印命令:

String command = "-i " + inputVideoPath +

" -i "+waterMarkPath2+" -i "+waterMarkPath+

" -filter_complex overlay=10:10,overlay=5:5 "+

outVideoPath+"";

将视频转换成小尺寸视频:

String command = "-i " + inputVideoPath +" -b:v 10000k -s 216x384 "+ outVideoPath+"";

如果碰到 App crash with error message: couldn't find "libmobileffmpeg_abidetect.so"

执行

flutter clean

flutter doctor -v

Flutter 插件问题(引入插件同时存在静态库与swift)

前提:Flutter 项目中引入使用多个插件,内含有swift与静态库时出现的一系列问题

问题一、swift插件缺少设置swift的版本号

解决方案:在Xcode中打开项目Targets—builds settings —user-defined

在user-defined内添加一行:SWIFT_VERSION(版本号视当前版本号为准)

问题二、静态库

看到网上好多的解决方法是删除掉或者添加上Podfile中的use_frameworks!,实测与此无关,错误信息忘记截图啦????,大体就是pod install 时出现无法install之类的信息

正解方法是找到相关错误插件内的podspec文件,添加s.static_framework = true


当前文章:flutter音频插件,flutter 播放器插件
标题URL:http://mswzjz.cn/article/dsepgjj.html

其他资讯