Hir*_*koo 8 google-chrome headless screen-capture google-chrome-headless puppeteer
我正在使用带有 Chromium 80 的 Puppeteer 最新版本,我正在尝试从 chrome headless 页面录制视频并打开所有这些标志:
{
headless: true,
devtools: false,
args: [
'--no-sandbox',
'--allow-insecure-localhost',
'--enable-usermedia-screen-capturing',
'--use-fake-ui-for-media-stream', // In headless: false it will capture display rather than tab and in headless: true doesn't work
'--auto-select-desktop-capture-source=[RECORD]', //[RECORD] is the title of my localhost page trying to screen capture
'--remote-debugging-port=9222',
'--window-size=1440,900',
],
ignoreDefaultArgs: [
'--mute-audio',
'--disable-media-session-api',
]
}
Run Code Online (Sandbox Code Playgroud)
在 Windows 上,如果是headless : false这样,它将捕获 chrome 选项卡(有时会崩溃)。但是,如果这headless : true甚至在 Windows 上,它就会说它是Not supported. 如果--use-fake-ui-for-media-stream标志打开,则是另一回事,无论是headless真是假,它都会捕获我的一个显示。
现在我想在没有显示的 linux 服务器上使用它,我只想让 chromeheadless : true捕获我的 chrome 选项卡。我知道它可以做到这一点,因为我可以headless : true在 DevTools 中看到处于模式下的屏幕。如果它在 DevTools 上创建显示,它必须能够在屏幕截图上创建显示。我想必须在 Puppeteer 上打开其他标志,所以它被允许这样做。我正在使用navigator.mediaDevices.getDisplayMedia以获取屏幕数据。
我也试过这个视频配置,但它不起作用(崩溃),显然只适用于扩展,我需要从后台获取源 ID:
screenStream = await navigator.mediaDevices.getDisplayMedia({
video: {
//mandatory: {
// chromeMediaSource: 'tab', // Not using this!
//}
},
audio: false
});
Run Code Online (Sandbox Code Playgroud)
有没有人知道Puppeteer也应该考虑哪些标志?
请注意,我不想在我的 chrome headless 中使用 xvfb 和 Selenium (WebDrive) 或任何扩展。
小智 1
这个问题被报告为一个 bug Here,GitHub 上的人们也遇到了同样的问题。这似乎是一个错误,目前尚不清楚他们何时会修复它。
与此同时,您可以使用显然可以在无头和有头模式下工作的puppeteer-video-recorder插件。
它可以在无头 Chrome 中录制视频吗?
是的,它确实。
但由于它使用FFMPEG视频的创建似乎很慢。无论如何,我希望你能使用它并且对你有所帮助。
| 归档时间: |
|
| 查看次数: |
1156 次 |
| 最近记录: |