在开发个 windows 软件,想把它运行期间的画面和声音录下来,但是又不想通过录屏来实现,记得有一些游戏软件似乎是可以实现录制的,所以想知道这是什么原理,怎么可以做到?
延伸下,思考了下视频制作的事情,除了通过摄像头、录屏等直接录制,或者通过准备好图片、声音、视频素材然后编辑制作,还有什么办法能生成视频的?
1
shily 2018-10-22 09:48:00 +08:00 via Android
游戏记录的是操作吧,没有额外的声音。
|
2
xenme 2018-10-22 09:53:01 +08:00 via iPhone
用户操作重放就行了,充当过程中屏蔽用户操作
|
3
nowheretoseek OP @xenme 软件是自用的,实际也基本没有操作,是软件开启后就开始自动开始更换窗体元素的内容并播放声音。所以重点是怎么能将这些记录下来,得到个视频文件。
|
4
nowheretoseek OP @shily 应该是的,记录下操作,然后回放的不是现成的视频,而是画面的“推演”。
|
5
cjw1115 2018-10-22 12:01:44 +08:00
看你这是用什么技术开发的了。如果是 WPF 的话,或许可以通过录制可视化树来实现录屏
|
6
GeruzoniAnsasu 2018-10-22 12:07:41 +08:00 1
dx 和 opengl 之类的,可以选择绘制目标缓冲区,绘制到显存而不是屏幕,然后再拖回内存存成一帧画面
录制自己程序的渲染输出其实就是“通过准备好图片、声音、视频素材然后编辑制作”的过程,往内存输出一次再往屏幕输出一次完事。 |
7
nowheretoseek OP @GeruzoniAnsasu 内存中生成的一个个帧是一张张“完整的”图片对象吗,不是一些帧上下文对比信息和还原算法?
|
8
GeruzoniAnsasu 2018-10-22 14:30:58 +08:00
@nowheretoseek 渲染出每一帧完整图像之后再过编码器变成视频的,视频编码器相当独立可以视为另一个模块和环节,只需要关心 API 怎么用就行,不需要自行实现。
不过你说的可能是另一个意思,类似 2L 说的,只需定义个自有格式来记录呈现画面的流程然后下次重放就行 |
9
Mutoo 2018-10-22 14:34:08 +08:00
游戏录像的话,可能是显卡自带的功能哦。例如 N 卡的 ShadowPlay
http://soft.zol.com.cn/510/5105548.html |
10
nowheretoseek OP @cjw1115 是 winform 吧
|