3

嗨,大家好,我想记录Chrome扩展的屏幕,为了做到这一点,我使用在Chrome中录制屏幕时如何实现60 FPS?

navigator.webkitGetUserMedia(videoConstraints, function(stream) { ... 

为videoConstraints我送:

var videoConstraints = { 
    audio: false, 
    video: { 
    mandatory: { chromeMediaSource: 'screen', maxWidth: 960, 
      maxHeight: 720, minWidth:960, minHeight:720 }, 
    optional: [ 
     { minFrameRate: 60 }, 
     { maxWidth: 640 }, 
     { maxHeigth: 480 } 
    ] 
} 
}; 

不幸的结果是相当laggy。用这种方法可以达到60 FPS吗?或者我应该寻找另一种选择?氯化钠会成为一种方式吗?

感谢

回答

0

你检查这个屏幕共享demo

我发现这个demo很快,试着检查这个演示页面里面的conference.js文件,你可能会发现一些线索。

+0

我知道这一个。实际上,经过仔细考虑之后,我发现这不是屏幕截图很慢,而是将其保存到磁盘。我正在做ctx.drawImage(视频...,然后是canvas.toDataURL('image/webp',1),这很慢 – wonglik

0

如果是花费时间最多的磁盘进行保存,则可以尝试使用chrome.storage将其保存为异步的unlimitedStorage权限,并且获取/设置图像数据可能会更快。也用于将图像绘制到画布上,您可以查看几件事情。您可以查看WebGL。另外请看requestAnimationFrame函数。这site有关于画布优化的信息。画到画布很慢,应尽可能少地重绘。这stackoverflow后可能也会帮助你。

我希望我能帮上忙。格鲁克!让我知道事情的后续。

+0

实际上问题在于将视频切分为画布,它只需要很多时间并使其跳过有些框架,所以我想存储在这里没有帮助,但我会通过你的其他链接。谢谢 – wonglik

+0

哦,我明白了,因为需要非常高的效率,你可能想减少[垃圾收集]的数量(http:///stackoverflow.com/questions/18364175/best-practices-for-reducing-garbage-collector-activity-in-javascript)done。垃圾收集可能会变成瓶颈,因为它几乎不能清理堆空间。所以减少垃圾收集可能会对你有所帮助。 – supb