我需要通过网络传输用台式机复制API捕获的台式机图像数据帧,但是存在一个问题:大小原始数据的帧数据,格式为 FullHD ,格式为 DXGI_FORMAT_B8G8R8A8_UNORM ,大约等于8 MB ,该尺寸太大,尤其是一帧时。
是否有一些好方法可以压缩来自 D3D11_MAPPED_SUBRESOURCE 的桌面图像帧和数据,并使其大小至少为 KB ?也许是从bmp到jpeg的某种转换?
我已经尝试过使用 LZ4_compress_default 方法进行 LZ4 压缩,并且获得大小为3.4 MB 的字节数组,这仍然太多了用于框架。
答案 0 :(得分:1)
...大尺寸,特别是一帧
由于您在进行视频和网络传输,因此,唯一真正适合您的选择是H.264和H.265视频压缩-在视频适配器的硬件辅助编码器中实现的那些选择。 Microsoft Media Foundation API (Transforms)和视频硬件供应商特定的SDK提供了相关的功能。
用于单个图像的Windows Imaging Component(WIC)在压缩率方面将更加缓慢且效率较低。尽管在单个快照是唯一要传输的数据而非视频的情况下,这可能是一个不错的选择。
还有一种简便的方法来检查对视频编码的支持:http://alax.info/blog/1609
该工具枚举转换并提供详细信息,类似于枚举媒体基础转换(MFT)应用程序