软件如何实现自我录制?

2018-10-22 09:39:50 +08:00
 nowheretoseek

在开发个 windows 软件,想把它运行期间的画面和声音录下来,但是又不想通过录屏来实现,记得有一些游戏软件似乎是可以实现录制的,所以想知道这是什么原理,怎么可以做到?

延伸下,思考了下视频制作的事情,除了通过摄像头、录屏等直接录制,或者通过准备好图片、声音、视频素材然后编辑制作,还有什么办法能生成视频的?

1348 次点击
所在节点    问与答
10 条回复
shily
2018-10-22 09:48:00 +08:00
游戏记录的是操作吧,没有额外的声音。
xenme
2018-10-22 09:53:01 +08:00
用户操作重放就行了,充当过程中屏蔽用户操作
nowheretoseek
2018-10-22 10:13:05 +08:00
@xenme 软件是自用的,实际也基本没有操作,是软件开启后就开始自动开始更换窗体元素的内容并播放声音。所以重点是怎么能将这些记录下来,得到个视频文件。
nowheretoseek
2018-10-22 10:14:01 +08:00
@shily 应该是的,记录下操作,然后回放的不是现成的视频,而是画面的“推演”。
cjw1115
2018-10-22 12:01:44 +08:00
看你这是用什么技术开发的了。如果是 WPF 的话,或许可以通过录制可视化树来实现录屏
GeruzoniAnsasu
2018-10-22 12:07:41 +08:00
dx 和 opengl 之类的,可以选择绘制目标缓冲区,绘制到显存而不是屏幕,然后再拖回内存存成一帧画面

录制自己程序的渲染输出其实就是“通过准备好图片、声音、视频素材然后编辑制作”的过程,往内存输出一次再往屏幕输出一次完事。
nowheretoseek
2018-10-22 12:55:01 +08:00
@GeruzoniAnsasu 内存中生成的一个个帧是一张张“完整的”图片对象吗,不是一些帧上下文对比信息和还原算法?
GeruzoniAnsasu
2018-10-22 14:30:58 +08:00
@nowheretoseek 渲染出每一帧完整图像之后再过编码器变成视频的,视频编码器相当独立可以视为另一个模块和环节,只需要关心 API 怎么用就行,不需要自行实现。

不过你说的可能是另一个意思,类似 2L 说的,只需定义个自有格式来记录呈现画面的流程然后下次重放就行
Mutoo
2018-10-22 14:34:08 +08:00
游戏录像的话,可能是显卡自带的功能哦。例如 N 卡的 ShadowPlay
http://soft.zol.com.cn/510/5105548.html
nowheretoseek
2018-10-22 15:08:17 +08:00
@cjw1115 是 winform 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/499683

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX