- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 Windows Media Format SDK实时捕获桌面并将其保存在 WMV 文件中(实际上这是对我的项目的过度简化,但这是相关部分)。对于编码,我使用 Windows Media Video 9 Screen编解码器,因为它对于屏幕捕获非常有效,而且几乎每个人都可以使用它而无需安装任何东西,因为编解码器包含在 Windows Media Player 9 运行时(包含在 Windows XP SP1 中)。
我正在使用 GDI 函数制作 BITMAP 屏幕截图,并将这些 BITMAP 提供给编码器。您可以猜到,使用 GDI 截屏很慢,而且我没有得到屏幕光标,我必须手动将其添加到 BITMAP。我最初得到的 BITMAP 是 DDB,我需要将它们转换为 DIB 以便编码器理解(RGB 输入),这需要更多时间。
启动分析器显示大约 50% 的时间花费在编码器 WMVCORE.DLL 上。这是意料之中的,当然,因为编码是 CPU 密集型的。
问题是,有一个东西叫做 Windows Media Encoder随 SDK 一起提供,并且可以使用所需的编解码器以更简单、更 CPU 友好的方式进行屏幕捕获。
WME 基于 WMF。它是一个更高级别的库,也有 .NET 绑定(bind)。我不能在我的项目中使用它,因为这会带来我必须避免的不需要的依赖项。
我问的是 WME 将样本数据馈送到 WMV 编码器的方法。编码在 WME 中发生,就像在我使用 WMF 的应用程序中发生的一样。 WME 比我的应用程序更高效,因为它有一种更有效的方式将视频数据馈送到编码器。它不依赖于缓慢的 GDI 函数和 DDB->DIB 转换。
它是怎么做到的?
最佳答案
CamStudio 的源代码,一个已经存在多年的 GPL 截屏应用程序(商业化,然后是后来的 open-srcd)可能有用吗?
http://sourceforge.net/project/showfiles.php?group_id=131922
我建议也查看 VNC 客户端的内容,尽管它们可能非常简单(我认为只需抓取屏幕截图,然后将自上次捕获以来发生变化的磁贴转为 jpg)。
如果 CPU 占用过多,您可能会考虑不使用 WMV9 作为实时编码的编码器?也许使用 HyperCam 使用的较旧、效率较低的压缩器(如 MS RLE),然后再压缩为 WMV?我相信至少自 Win2000 以来,MS RLE 一直是默认安装: http://wiki.multimedia.cx/index.php?title=Microsoft_RLE
CamStudio 的无损编解码器是 GPL(与上面相同的链接),它提供了很好的压缩(尽管您需要将 dll 捆绑在安装程序中)并且可以即时使用,它在所有高压缩下运行良好现代系统。
关于windows - 使用 Windows 媒体格式 (WMF) 捕获桌面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63563/
我一直在尝试在 Delphi 中更改 wmf Canvas 上的颜色,对于通常的图像,我只是运行扫描线或在每个 X 和 Y 像素上运行循环并给它一个新的颜色代码,但使用 MetaCanvas 这种方法
我正在学习 Windows Media Foundation。 我已经测试了 Windows SDK 中提供的几个示例应用程序。 我有从相机捕获视频和从文件播放视频的示例应用程序。 我要存档的是将这两
有很多将 wmf 转换为位图的示例,例如: Reliable .wmf/wmf to Pixel based image conversion 但我需要反向操作。我不寻找矢量化器。我只想在 wmf 文
我正在尝试将图表从 Excel 导出为 wmf 或 emf 格式。 如果导出为 GIF 但不使用 WMF 作为过滤器名称,则该代码有效。 这有效: Chart.Export FileName:="cu
在我的程序中,我需要“播放”或“解析”Windows 图元文件(WMF 和 EMF)。我已经通过 MSDN 和 Google 进行了挖掘,最接近的是图形。枚举图元文件方法。我可以让它工作,因为我的 E
我在将矢量图形 (WMF) 插入报告(Visual Studio 2008 中的 Crystal Reports v10.5)时遇到问题。图片是静态的,在VS中设计报表时选择“插入图片”插入。 问题在
如何将 WMF 文件转换为 svg 文件?我有大约 550 个 WMF 文件要转换为 SVG 格式。 对于一个文件,我在 VISIO 中打开了 WMF 文件并将其保存为 SVG 格式,但是转换大约 5
我正在 Alpine 上安装 imagemagick,它会安装 7.0.10 版本的 imagemagick。 我的主要用途是将 WMF 转换为 PNG。但是转换sample.wmf Sample.p
我正在 Alpine 上安装 imagemagick,它会安装 7.0.10 版本的 imagemagick。 我的主要用途是将 WMF 转换为 PNG。但是转换sample.wmf Sample.p
在 C++ 中,当使用 GDI+ RotateFlip 函数旋转 WMF 图像时,图像不会旋转。我使用以下代码进行旋转。 Graphics graphics(hdc); Image image(L"C
我想将 .svg 矢量图形转换为 .wmf。我查看了这个图书馆 http://wmf.codeplex.com/ ,但没有成功。 我找到了这个图书馆 http://svg2swf.sourceforg
我可以使用下面的 java 代码检查字节数组是否是元文件图像,如 wmf、emf private boolean isMetaFileFormat(byte[] pictureData) {
我正在尝试通过 WUSA.exe 添加 WMF 以在 Windows 7 上使用 powershell 3.0。这是为了重命名计算机,因为我找不到正确的 NETDOM.Exe 安装程序,并且 WMI
我正在使用 Windows Media Format SDK实时捕获桌面并将其保存在 WMV 文件中(实际上这是对我的项目的过度简化,但这是相关部分)。对于编码,我使用 Windows Media V
如何获取可在 MS Office(Word 和 PowerPoint)中用作矢量图形的 emf 或 wmf 文件形式的 matplotlib 绘图? 我尝试使用 Inkscape 和 LibreOff
我正在尝试在 Linux 下使用 PHP 和 Imagick 将 SVG 格式的图像转换为 WMF。我可以成功地将图像从 SVG 转换为 PNG,但不能从 SVG 转换为 WMF。我没有得到任何 PH
如何将一个 WMF 文件转换为具有自定义输出分辨率的 PNG/BMP/JPG 格式? 示例:获取 WMF 文件并输出 2000x2000 像素的 PNG 文件。 提前致谢。 最佳答案 您可以使用出色的
我正在收到带有 Word docx 文档的表单上传。我成功完成了所有解析。然后我必须在网络上显示该 Word 文档。 我现在遇到的问题是我嵌入了 EMF 文件(PIL 库将其识别为 WMF 格式),但
我需要将一些格式为“wmf”的视频文件转换为“mp4”或“avi”。 我使用带有命令的ffmpeg: ffmpeg -i test.wmf test.mp4 但是当我在视频播放器中播放结果文件时,我发
我正在编写 WMF 自定义媒体源。 此源从 RTSP 流(使用 FFMPeg 4.1)获取 h264 数据包,并将它们发送到解码器并使用 EVR 将它们呈现到屏幕上。它还将它们发送到编码器和文件写入器
我是一名优秀的程序员,十分优秀!