您好,我正在UWP C#项目中开发屏幕共享实用程序。我已经在下面的链接中实现了所有代码。
链接:https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/screen-capture
现在的问题是如何从捕获的帧中获取像素数据。我可以在以下两个对象中转换捕获的帧。
那么如何从这些对象中获取像素数据?
获取像素数据之前,我需要执行编码或解码还是两者都进行?
答案 0 :(得分:0)
您可以通过调用CanvasBitmap.CreateFromDirect3D11Surface方法来获取CanvasBitmap实例。在此实例上调用GetPixelBytes方法将位图的像素数据作为字节数组返回。
using (var frame = _framePool.TryGetNextFrame()) {
using (var canvasBitmap = CanvasBitmap.CreateFromDirect3D11Surface(_canvasDevice, frame.Surface)) {
bytes[] pixelData = canvasBitmap.GetPixelBytes();
}
}
我是否需要先执行编码或解码或同时执行两项操作 像素数据?
返回的数据应与创建帧池时指定的像素格式相同:
_framePool = Direct3D11CaptureFramePool.Create(
_canvasDevice, // D3D device
DirectXPixelFormat.B8G8R8A8UIntNormalized, // Pixel format
2, // Number of frames
_item.Size); // Size of the buffers