如何在 AWS Lambda 上使用 OESMesa 模拟 WebGL 内容?
How do I emulate WebGL stuff with OESMesa on AWS Lambda?
我想截取使用 WebGL 的网站的屏幕截图。我不必使用 GPU 打开该站点。使用仿真对我来说就足够了。
一开始,我已经尝试过headless-chrome来做到这一点。那可以截取有序的网站。但是,它不适用于 WebGL 画布。
我认为一种可能性是使用 OSMesa 或其他东西来模拟 OpenGL。
我已经使用了我所有的策略来克服这个问题。这真的可以做到吗?
如果是,请告诉我该怎么做。如果没有,我想知道为什么。
谢谢。
是的,这是可能的!
您需要正确的组合:
- 无头 chromium 二进制文件
- libosmesa.os 二进制文件(在同一目录中)
- 使用正确的标志启动 chrome headless,例如(有关详细信息,请参阅 link):
['--use-gl=osmesa', '--enable-webgl', '--ignore-gpu-blacklist', '--homedir=/tmp', '--single-process', '--data-path=/tmp/data-path', '--disk-cache-dir=/tmp/cache-dir']
无服务器-chrome github 项目上的这个线程讨论了这个问题并提供了一些二进制文件,我曾使用这些二进制文件使用 Page.captureScreenshot() 在 AWS Lambda 上捕获 WebGL 内容的屏幕截图.
https://github.com/adieuadieu/serverless-chrome/issues/108#issuecomment-416494572
(参见@apalchys 在 8 月 28 日发表的评论)
此特定示例使用 SwiftShader,这似乎是未来的首选。
但是请注意,我无法使用此版本 Page.printToPDF()
创建 PDF - WebGL 内容只显示 blank/white。但是,我也能够使用使用 osmesa 的早期版本获得 Page.printToPDF()
,请参阅 https://github.com/adieuadieu/serverless-chrome/issues/108#issuecomment-371199530
我想截取使用 WebGL 的网站的屏幕截图。我不必使用 GPU 打开该站点。使用仿真对我来说就足够了。
一开始,我已经尝试过headless-chrome来做到这一点。那可以截取有序的网站。但是,它不适用于 WebGL 画布。 我认为一种可能性是使用 OSMesa 或其他东西来模拟 OpenGL。
我已经使用了我所有的策略来克服这个问题。这真的可以做到吗? 如果是,请告诉我该怎么做。如果没有,我想知道为什么。
谢谢。
是的,这是可能的!
您需要正确的组合:
- 无头 chromium 二进制文件
- libosmesa.os 二进制文件(在同一目录中)
- 使用正确的标志启动 chrome headless,例如(有关详细信息,请参阅 link):
['--use-gl=osmesa', '--enable-webgl', '--ignore-gpu-blacklist', '--homedir=/tmp', '--single-process', '--data-path=/tmp/data-path', '--disk-cache-dir=/tmp/cache-dir']
无服务器-chrome github 项目上的这个线程讨论了这个问题并提供了一些二进制文件,我曾使用这些二进制文件使用 Page.captureScreenshot() 在 AWS Lambda 上捕获 WebGL 内容的屏幕截图.
https://github.com/adieuadieu/serverless-chrome/issues/108#issuecomment-416494572
(参见@apalchys 在 8 月 28 日发表的评论)
此特定示例使用 SwiftShader,这似乎是未来的首选。
但是请注意,我无法使用此版本 Page.printToPDF()
创建 PDF - WebGL 内容只显示 blank/white。但是,我也能够使用使用 osmesa 的早期版本获得 Page.printToPDF()
,请参阅 https://github.com/adieuadieu/serverless-chrome/issues/108#issuecomment-371199530