如何解决我可以将传入的BMP图像流显示为视频吗? Android应用
是否可以将传入的BMP图像流作为超低延迟的视频播放(图像显示时间不到20毫秒)
图像的频率为每秒20张图像。
这种天真的解决方案是否可行,还是应该使用H.264 / 5来编码图像?
应如何解决此问题?
友好的问候
解决方法
Q :“这种天真的解决方案是否可能...?”
是的
您可能还喜欢this piece对此进行阅读。
Q :“ ...应该使用H264 / 5编码图像吗?”
地狱取决于。
鉴于上述20 Hz BMP图像的进入速率,(主要是)所有 V 正常部分的每个图像大约有 50 [ms]
分布式)的MVC系统。
在所说的50毫秒内,应该浪费零时间,并且什么都不会阻塞。
因此, 接收引擎必须保持入口的稳定数据流,任何其他不协调的带宽(内存,I / O, ...)进食者(到目前为止尚未提及BMP图片的大小),并且必须提供某种手段,以防万一,在 presenter -engine next”-由于显示而导致的数据不完整或根本不存在。
那压缩呢?
压缩是一把双刃剑-您显然可以减少数据量(使用一些SER / DES编解码器,甚至以失去一部分原始数据丰富性为代价,是的,确切地说-是有意的有损压缩方案) ,尽管通常会添加一些其他数据重新成帧,并且可能添加R / S或其他“行代码”错误检测/错误校正,所以最终要发送的数据量不必小到纯压缩部分本身在理论上是允许的。
结果?
所有这些都付出了不菲的代价-在SER /编码器方面,在这里要获取尽可能少的数据(众所周知的低带宽/模糊,通常是无法控制的延迟),并在解码器/ DES-一侧。
因此,考虑到20 Hz的刷新率对一帧进行重新绘制最多不超过50 ms,则接收器引擎处理和演示者引擎处理的总开销不能超过每帧50 ms。任何与此相关的解码器和与解串器相关的处理都是决定性因素。
但是,如果进行适当的设计和无缺陷的工程来做到这一点且足够健壮,则可能会成功。
检查目标设备中的所有内容:
- 运输资源限制
(即消耗了多少时间,每次到达分配/锁定了哪些资源), - 内存I / O
(任何交错数据流模式的延迟和内存I / O并发限制), - 缓存层次结构
(如果存在于设备上)大小,成本和I / O限制), - 处理限制
(如果是多核,则为NUMA,请注意非均匀的内存I / O陷阱) - 演示者引擎硬件瓶颈
(内存I / O,显示设备缓冲区I / O限制和任何其他附加延迟)
因为这些细节中的任何一个都可能破坏顺畅的(错误恢复)数据流,从而在期望的时间达到目标20 FPS的适当时间最终显示在目标设备上。
祝你好运!
Nota bene:
如果您可以在源头上直接利用数据约简,请抓住机会并做到这一点,例如在任何情况下,例如您知道先验知识所有目标 presenter -engines 都是黑白的,从不“发送”多彩的BMP,剥离所有每帧的色彩表和高级色彩配置技巧,流不只是原始的,合适大小的栅格数据,它与目标终端设备的最坏情况处理和延迟上限情况相匹配。
仔细检查所有这些冗余且主要是浪费的(因为重复)部分通用BMP数据格式定义,请勿重新广播'em
;)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。