Я пытаюсь передать скриншоты, сгенерированные кукловодом, в процесс ffmpeg, чтобы сделать видео без предварительной записи в промежуточные файлы.
Из командной строки я знаю, что у ffmpeg есть возможность делать видео из rawданные из стандартного ввода, например, это работает:
cat img/*.png | ffmpeg -f image2pipe -i - output.mp4
Я хочу получить в основном тот же результат, но отправляю данные непосредственно из кукловода в процесс ffmpeg.Вот моя попытка отправить несколько кадров по каналу в ffmpeg от кукловода, но это не работает.Программа даже не закрывается, я подозреваю, что неправильно использую каналы или что-то в этом роде.Как я могу заставить его работать должным образом?
const puppeteer = require("puppeteer");
const { spawn } = require("child_process");
async function main() {
let browser = await puppeteer.launch({});
let page = await browser.newPage();
await page.goto("http://google.com");
let ffmpeg = spawn("ffmpeg", ["-f", "image2pipe", "-i", "-", "output.mp4"], {
stdio: ["pipe", process.stdout, process.stderr]
});
for (let i = 0; i < 10; i++) {
let screenshot = await page.screenshot();
ffmpeg.stdin.write(screenshot);
}
await browser.close();
}
main();