编程屏幕录制器 - 输出问题

8

我希望能够录制屏幕(每秒捕获15个截图)。这部分我知道该怎么做。但是我不知道如何将其写入一些流行的视频格式中。我发现最好的选择是将帧写入单独的PNG文件中,然后使用命令行Mencoder将它们转换为许多输出格式。但也许有人有另一个想法呢?

要求:

  • 必须是多平台解决方案(我正在使用Free Pascal / Lazarus)。Windows、Linux、MacOS
  • 有一些库可以做到这一点吗?
  • 可能是复杂的命令行应用程序,可以为我记录屏幕,但我必须在将整个原始数据转换为流行的视频格式之前有编辑帧的可能性
  • 欢迎提供任何可能给我一些想法的材料。API、库、即使是其他语言的东西(我会尝试重写它或找到一些等价物)
  • 我还考虑过将帧写入视频RAW格式,然后使用Mencoder(他可以处理它)或其他解决方案,但找不到任何关于视频RAW数据的API/文档

问候


ffmpeg 是一个跨平台的程序,遵循 LGPL 或 GPL 许可协议,最近有更新。 - Argalatyr
看起来像是Mencoder项目。所以我有输出编码的解决方案。但是如何为这些编码器准备输入呢?我正在寻找与PNG文件系列不同的东西。 - Dibo
文档描述了从图像帧到mpeg的编码。这不是你想要的吗? - Argalatyr
是的,如果没有更好的方法,我将使用一系列图形文件,但我担心这种解决方案的速度(为每个帧创建文件应该比写入一个文件需要更长时间?) - Dibo
请访问此链接以获取可工作的FFMPEG C++屏幕录制示例代码:https://dev59.com/JGsy5IYBdhLWcg3wyxCi#43464269。 - Abdullah Farweez
2个回答

5

Argalatyr已经提到了ffmpeg。

有两种方法可以使其工作:

  1. 通过生成新进程。您只需要准备正确的输入(例如一系列jpeg图像)和正确的命令行参数。之后,您只需调用ffmpeg.exe并等待其完成。

  2. ffmpeg使用一些dll来执行实际工作。您可以直接从Delphi应用程序中使用这些dll。它需要更多的工作,因为它更低级,但最终它将使您对发生的事情以及在处理过程中向用户显示什么具有更好的控制力。

以下是一些可供查看的解决方案:


谢谢大家!DLL解决方案看起来很有前途。我会去尝试一下。 - Dibo
@Wouter:由于有人将我的(早期)答案删除为仅仅是一条评论,你可能想要编辑你的答案。这对我来说似乎不公平,但这就是现实。 - Argalatyr

-1

之前有关于 Delphi 组件的讨论 在这里。它是一个非常简单的组件,有时会生成一些奇怪的电影。也许可以作为一个起点。


你看到 OP 的第一个要求了吗?“跨平台”。 - Argalatyr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接