我正在尝试使用 C# 捕获 UWP 应用程序中 XAML 网格的视频。
我的方法。
1.使用RenderTargetBitmap进行截图renderTargetBitmap.RenderAsync
2.将数据转换为字节数组。
3.使用字节创建图像文件并将其保存在磁盘上BitmapEncoder
4.使用该图像创建 MediaClipMediaClip.CreateFromImageFileAsync
5.将剪辑添加到 MediaCompositioncomposition.Clips.Add(clip)
6.使用保存为视频composition.RenderToFileAsync(video);
现在这个方法有效了。
但正如你可以想象的那样,去磁盘保存图像,然后读取它们来创建剪辑,其速度慢且帧速率低。
我正在寻找一些可以避免每个屏幕截图都进入磁盘的东西。
转换的东西RenderTargetBitmap
(or IBuffer
or byte[]
) to MediaClip
s,无需访问磁盘,或使用其他方法来保存视频。
我正在开发UWP app for Hololens.
尝试这样的事情:
和你做的一样。
using (var soft = SoftwareBitmap.CreateCopyFromBuffer(pixels, BitmapPixelFormat.Bgra8, renderTargetBitmap.PixelWidth, renderTargetBitmap.PixelHeight, BitmapAlphaMode.Premultiplied))
{
CanvasBitmap canvas = CanvasBitmap.CreateFromSoftwareBitmap(CanvasDevice.GetSharedDevice(), soft);
MediaClip m = MediaClip.CreateFromSurface(canvas, DateTime.Now - previousFrame);
composition.Clips.Add(m);
}
记得捕获设备丢失异常并创建一个新设备
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)