1

我需要通过网络传输使用 Desktop Duplication API 捕获的桌面图像数据帧,但存在一个问题:原始帧数据的大小 ,采用DXGI_FORMAT_B8G8R8A8_UNORM格式的FullHD格式,大约等于 8 MB,尺寸太大,尤其是一帧。

有没有什么好的方法可以压缩框架、桌面图像、来自D3D11_MAPPED_SUBRESOURCE的数据并获得至少以KB为单位的大小?也许某种从 bmp 到 jpeg 的转换?

我已经尝试过LZ4压缩,使用LZ4_compress_default方法,得到了 3.4 MB大小的字节数组,这对于帧来说仍然太多了。

4

1 回答 1

1

...大尺寸,尤其是一帧

由于您正在进行视频和网络传输,因此对您来说唯一真正的选择是 H.264 和 H.265 视频压缩 - 可以在视频适配器上的硬件辅助编码器中实现。Microsoft媒体基础 API(转换)和视频硬件供应商特定的 SDK 提供相关功能。

用于单个图像的 Windows 映像组件 (WIC) 的压缩率会较慢且效率较低。尽管在单个快照是唯一要传输的数据而不是视频的情况下,这可能是一个不错的选择。

此外,还有一种检查视频编码支持的简单方法:http: //alax.info/blog/1609

这些工具枚举转换并提供详细信息,类似于枚举媒体基础转换 (MFT) 应用程序

于 2019-11-18T07:11:38.097 回答