让ffmpeg捕获xfvb的全屏运行Puppeter脚本,并通过rtmp发送 我的问题

让ffmpeg捕获xfvb的全屏运行Puppeter脚本,并通过rtmp发送 我的问题,ffmpeg,puppeteer,xvfb,Ffmpeg,Puppeteer,Xvfb,我无法让ffmpeg或xvfb运行以将整个屏幕流式传输到ffplay/videolan,它只捕获屏幕的一部分 更新2 我在后续的回答中自己回答了这个问题,希望它能对其他有同样问题的人有用 更新1 所以问题肯定出在xvfb run上,因为下面两个命令仍然提供一个webm文件,它只显示屏幕的一部分 ffmpeg-f x11grab-i:99-g50-b:v 4000k-maxrate 4000k-bufsize 8000k-f webm-s 384x216“blank.webm” xvfb run-

我无法让ffmpeg或xvfb运行以将整个屏幕流式传输到ffplay/videolan,它只捕获屏幕的一部分

更新2 我在后续的回答中自己回答了这个问题,希望它能对其他有同样问题的人有用

更新1 所以问题肯定出在xvfb run上,因为下面两个命令仍然提供一个webm文件,它只显示屏幕的一部分

ffmpeg-f x11grab-i:99-g50-b:v 4000k-maxrate 4000k-bufsize 8000k-f webm-s 384x216“blank.webm”

xvfb run-n 99-a--server args=“-screen 0 1024x8000x24-ac-nolisten tcp-dpi 96+extension RANDR”“node index.js”

我试过的
  • 我已尝试更改ffmpeg命令和xvfb运行,例如,将“-vf format=yuv420p”或“-filter:v“crop=iw-400:ih-40,scale=960:720”添加到ffmpeg命令
  • 我试着用xvfb运行而不是puppeter(chrome…)来显示其他应用程序
  • 使用ffmpeg录制屏幕并将其保存到文件中,以查看rtmp流是否存在问题
但还是没有运气。这就是为什么我要联系stackoverflow社区

xvfb运行命令

xvfb run-n 99-a--server args=“-screen 0 1024x8000x24-ac-nolisten tcp-dpi 96+extension RANDR”“node index.js”

ffmpeg命令捕获xvfb运行虚拟屏幕

ffmpeg-f x11grab-i:99-f pulse-i default-c:v libx264-c:a aac-g 50-b:v 4000k-maxrate 4000k-bufsize 8000k-f flv-listen 1rtmp://localhost:4444/stream

最后显示rtmp流

ffplay-fflags-nobuffer-flags low_delay-probesize 32-flags low_delay-analyzeduration 0-irtmp://localhost:4444/stream

xfvb运行的木偶脚本(index.js)



import puppeteer from 'puppeteer';
let initPuppeteer = async () => {
  const launchArgs = [
    //'--window-size=1280,1024',
    '--disable-web-security',
    '--disable-features=IsolateOrigins',
    '--disable-site-isolation-trials',
    '--app',
    '--kiosk',
  ]
  await puppeteer.launch({headless: false, ignoreDefaultArgs: ["--enable-automation"], args: launchArgs});
  const page = await this.browser.newPage();
  const device = puppeteer.devices['Nexus 10'];
  await page.emulate(device);
  await page.goto("https://google.com");
}
initPuppeteer()

所以我一直在调试并试图解决这个问题,问题在于ffmpeg以及我添加标志的顺序

自我提示:使用ffmpeg时,标志的顺序非常重要。

解决方案
ffmpeg-video\u大小640x1208-f x11grab-i:99-c:v libx264-c:a aac-g 50-b:v 4000k-maxrate 4000k-bufsize 8000k-f flv-listen 1rtmp://localhost:4444/stream 

其中,我在ffmpeg命令之后添加了
-视频大小640x1208

我在这个答案中找到了视频大小标志-