скриншоты трубы от кукловода до ffmpeg - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь передать скриншоты, сгенерированные кукловодом, в процесс 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...