C# 屏幕截图问题。。

didiaogao 2010-06-23 10:04:36
我要用c#做一个屏幕录像的软件。可是 如果屏幕操作过快的话,录出来的效果特别快,
主要思路是每个30毫秒我会截取一张bmp格式的屏幕图片,一个图片加一帧,最后生成avi文件。
可是如果屏幕操作过多过快的话 timer事件出发的就会少。Interval 属性设置成10 和100 截出来的图一样多。。。 这样就导致 合成avi视频的原图片减少 帧也就减少。。。 所以录制出来的视频才会过快。。。



请问 我该如何 解决 屏幕操作过快过多,timer事件触发次数不够的问题。。。


放在线程里可以吗? 该怎么写。。。 谢谢
...全文
629 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzz2011 2010-09-05
  • 打赏
  • 举报
回复
来学习的
didiaogao 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 guohelv0519 的回复:]
看看我的下载资源吧
[/Quote]
试过了 画面效果太差
didiaogao 2010-06-25
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 guohelv0519 的回复:]
看看我的下载资源吧
[/Quote]

提示 unable to find manifest signing certificate in the certificate store
sunkai572 2010-06-24
  • 打赏
  • 举报
回复
学习下。
didiaogao 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 zhoufoxcn 的回复:]
引用楼主 didiaogao 的回复:
我要用c#做一个屏幕录像的软件。可是 如果屏幕操作过快的话,录出来的效果特别快,
主要思路是每个30毫秒我会截取一张bmp格式的屏幕图片,一个图片加一帧,最后生成avi文件。
可是如果屏幕操作过多过快的话 timer事件出发的就会少。Interval 属性设置成10 和100 截出来的图一样多。。。 这样就导致 合成avi视频的原图片减少 帧也就减少。……
[/Quote]

原因清楚了。问题是怎么解决 。。 有办法吗?谢啦
didiaogao 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 flowerjack 的回复:]
嗯,楼主用你的方法保存的视频会会有点大呢?一个十分钟的视频应该会有几十M那么大吧。我也不是很懂,但感觉这位仁兄的方法可行

引用 2 楼 kolosi 的回复:
这个没办法,cpu分给线程的时间片是不固定的,你没办法达到精确的定时。

你可以把每次截图是时间记录下来,然后按时间插入生成avi,这样就不会快了。
[/Quote] 我用的压缩方法我觉得还是比较好的。。。很快 也不大。
didiaogao 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 flowerjack 的回复:]
嗯,楼主用你的方法保存的视频会会有点大呢?一个十分钟的视频应该会有几十M那么大吧。我也不是很懂,但感觉这位仁兄的方法可行

引用 2 楼 kolosi 的回复:
这个没办法,cpu分给线程的时间片是不固定的,你没办法达到精确的定时。

你可以把每次截图是时间记录下来,然后按时间插入生成avi,这样就不会快u了。
[/Quote] 插入事件的话 如果某一秒 截取图片过少的话,那视频时间间隔过长,效果是什么 可以想象
bobibobi 2010-06-24
  • 打赏
  • 举报
回复
把进程和线程设置成高忧先级,效果可能会好点。
guohelv0519 2010-06-24
  • 打赏
  • 举报
回复
看看我的下载资源吧
宇峰科技 2010-06-24
  • 打赏
  • 举报
回复
周公历害
周公 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 didiaogao 的回复:]
我要用c#做一个屏幕录像的软件。可是 如果屏幕操作过快的话,录出来的效果特别快,
主要思路是每个30毫秒我会截取一张bmp格式的屏幕图片,一个图片加一帧,最后生成avi文件。
可是如果屏幕操作过多过快的话 timer事件出发的就会少。Interval 属性设置成10 和100 截出来的图一样多。。。 这样就导致 合成avi视频的原图片减少 帧也就减少。。。 所以录制出来的视频才会过快。。。
……
[/Quote]
Interval不是你设置成多少就一定按照那个间隔去执行的,比如一个操作需要1秒,你设置成1,10,100,900都是一样的,在设定的Interval内没有执行完势必会影响下一个循环(顺延)。
zhu8323124 2010-06-24
  • 打赏
  • 举报
回复
顶下 拿分
huzi110 2010-06-24
  • 打赏
  • 举报
回复
学习~
didiaogao 2010-06-24
  • 打赏
  • 举报
回复
哎 ,,,,刚才试了一下arrayliat的方法 。但内存受不了。。 还是不行。。。日了
ACDINO 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ooamyoo 的回复:]
我也想知道
[/Quote]
++
summer_wish 2010-06-24
  • 打赏
  • 举报
回复
学习下
kolosi 2010-06-23
  • 打赏
  • 举报
回复
这个没办法,cpu分给线程的时间片是不固定的,你没办法达到精确的定时。

你可以把每次截图是时间记录下来,然后按时间插入生成avi,这样就不会快了。
didiaogao 2010-06-23
  • 打赏
  • 举报
回复
自己顶下。。 咋没人。。。
flowerjack 2010-06-23
  • 打赏
  • 举报
回复
嗯,楼主用你的方法保存的视频会会有点大呢?一个十分钟的视频应该会有几十M那么大吧。我也不是很懂,但感觉这位仁兄的方法可行
[Quote=引用 2 楼 kolosi 的回复:]
这个没办法,cpu分给线程的时间片是不固定的,你没办法达到精确的定时。

你可以把每次截图是时间记录下来,然后按时间插入生成avi,这样就不会快了。
[/Quote]
yilaozhuang 2010-06-23
  • 打赏
  • 举报
回复
有创意,学习下
加载更多回复(7)

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧