有什么办法可以在抖动中实现双缓冲?

金在亨

我已经实现了带有tcp套接字的图像流播放器。

c ++服务器(从该服务器获取抖动套接字)发送图像数据。
图片大小约为200KB〜1MB。

在Flutter中,我试图保持每秒4帧。
C ++(服务器)和Dart(客户端)中的套接字都可以处理该数量的数据。
但是,当我通过Image.memory(data)小部件显示那些数据时,它闪烁了。
(闪烁的原因是,第一,我想,第n + 1数据中第n个数据是由图像控件呈现得到。其次,图像的大小是如此之大,应用程序不能没有空白的渲染图像。)
所以我想要实现双重缓冲。

现在,“我的Flutter”应用程序获取数据并将其交替发送到多个流。
然后,Stack小部件中的多个流构建器获取这些数据并通过Image.memory()小部件显示。
闪烁已大大减少,但仍在闪烁。

即使,这也不是真正的双重缓冲方法。
如果不重新渲染,则无法更改堆栈中小部件的顺序。

有什么办法或插件吗?

谢谢。

更新
有一种方法可以使其不闪烁。无缝播放选项。

_image = Image.memory(data, gaplessPlayback: true)
敦促

Flutter不提供对设备上实际图形库(可能是OpenGL ES)的访问,因此没有真正的双缓冲。

用于视频播放的小部件是video_player,您可以通过软件包添加它

如果无法将数据转换为与该程序包兼容的格式,则始终可以使用canvasdrawImage方法自己绘制数据所有这些可能都是通过定制画家来完成的

以上两种方法均应轻松支持您要求的4 fps。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有什么办法可以实现行合并?

有什么办法可以实现诸如在Kotlin中重写操作符?

有什么办法可以看到Common Lisp中内置宏的实现吗?

有什么办法可以在实体框架中实现这一点吗?

有什么办法可以实现这个步骤吗?

有什么办法可以在Tab视图中实现FirebaseListAdapter?

有没有什么办法可以实现会员离开语音频道的功能?

有什么办法可以在 kubernetes 中查看 entrypont 命令

有什么办法可以在iOS中以编程方式断开呼叫

有什么办法可以在Elastic Search中匹配类似匹配

有什么办法可以在Python中打印** kwargs

有什么办法可以在Swift中引用当前模块?

有什么办法可以找到laravel中半径所在的位置

有什么办法可以在HQL中执行此查询?

有什么办法可以在Vim中查看当前映射的键?

有什么办法可以取消Kivy中的UrlRequest?

有什么办法可以缩短C ++中的String类型?

有什么办法可以引用Java中的当前框架?

我有什么办法可以在Swift中捕获断言?

有什么办法可以改变React js中render的状态?

有什么办法可以在paintComponent中获取参数?

有什么办法可以在LaTeX中定义变量?

有什么办法可以先在Haddock中描述函数参数?

有什么办法可以在docker stats中显示容器名称?

有什么办法可以“提交” Redux中的状态以释放内存?

有什么办法可以在Rust中获得`struct`的地址吗?

有什么办法可以在Phonegap中获取当前日期?

有什么办法可以在Django中对聚合进行分组?

有什么办法可以在Ubuntu中添加DSN吗?