Навчання використанню Puppeteer-Stream для запису відео без відкриття браузера 🎈

pic

Фото з chat gpt ai

Хтось коли-небудь думав записувати відео, але не хоче, щоб воно відображалось в браузері? 🤚 Я мав можливість працювати над проєктом, який пов'язаний з таким завданням, тому вирішив поділитись досвідом. Готові? Поїхали! ```

Спершу нам потрібно познайомитись з бібліотекою puppeteer-stream.

Puppeteer-stream — це бібліотека, яка використовується разом з Puppeteer для додавання функціональності запису відео з екрану (screen recording) сторінки, яку контролює Puppeteer, у вигляді відео стріму (Readable Stream). Її особливість полягає в тому, що вона дозволяє безпосередньо працювати з записом відео у форматі стріму, що підходить для завдань, які потребують гнучкості, таких як запис і обробка відео під час зйомки або передача відео в реальному часі на інші адреси.

Як працює puppeteer-stream

  1. Використовуємо Puppeteer для запуску браузера (Chrome або Chromium) в режимі headless або non-headless.
  2. Використовуємо Puppeteer-stream для початку процесу запису екрану поточної вкладки (або веб-сторінки), що відображається в браузері.
  3. Записане відео виходить у вигляді стріму (Readable Stream), який можна:
  • Зберігати у файл (наприклад, .webm).
  • Передавати на інші сервери через різні протоколи, такі як HTTP або WebSocket.

4.
pic

Фото з chat gpt ai

Хтось коли-небудь думав записувати відео, але не хоче, щоб воно відображалось у браузері? 🤚 Я мав можливість працювати над проєктом, що стосується такого завдання, тому вирішив поділитись досвідом. Готові? Поїхали! ```

Спершу нам потрібно познайомитись з бібліотекою puppeteer-stream.

Puppeteer-stream — це бібліотека, яка використовується разом з Puppeteer для додавання функціональності запису відео з екрану (screen recording) сторінки, яку контролює Puppeteer, у вигляді відео стріму (Readable Stream). Її особливість полягає в тому, що вона дозволяє безпосередньо працювати з записом відео у форматі стріму, що підходить для завдань, які потребують гнучкості, таких як запис і обробка відео під час зйомки або передача відео в реальному часі на інші адреси.

Як працює puppeteer-stream

  1. Використовуємо Puppeteer для запуску браузера (Chrome або Chromium) в режимі headless або non-headless.
  2. Використовуємо Puppeteer-stream для початку процесу запису екрану поточної вкладки (або веб-сторінки), що відображається в браузері.
  3. Записане відео виходить у вигляді стріму (Readable Stream), який можна:
  • Зберігати у файл (наприклад, .webm).
  • Передавати на інші сервери через різні протоколи, такі як HTTP або WebSocket.

Відкриваємо браузер і записуємо відео

Крок 1: Встановлення

Спершу, потрібно встановити бібліотеку в вашому проєкті, а потім почекати, поки вона буде встановлена.

npm i puppeteer-stream

Після цього спробуємо імпортувати puppeteer-stream для використання в коді 👴

const { launch } = require("puppeteer-stream");  

let browser, page;  

async function openBrowserGotoPageByURL(url) {  
  browser = await launch({  
    executablePath: 'path/to/chrome/in/your/computer/naJaaaarrr',  
    headless: false,  
    args: ['--headless=new', '--disable-blink-features=AutomationControlled', '--no-sandbox', '--disable-setuid-sandbox'],  
    defaultViewport: { width: 1280, height: 720 },  
  });  

  page = await browser.newPage();  
  await page.goto(url);  
}  

openBrowserGotoPageByURL('https://www.google.com/');

Після цього потрібно вставити код і запустити. Браузер з указаною URL-адресою повинен відкритися, але якщо ви хочете приховати його від користувача, змініть параметр headless на true.

headless: true,

Це дозволить браузеру працювати в фоновому режимі без відображення.

Крок 2: Запис відео

Використовуємо метод getStream(), щоб записати відео:

const { launch, getStream } = require("puppeteer-stream");  
const fs = require('fs');  
let browser, page, stream;  

async function openBrowserGotoPageByURL(url) {  
  browser = await launch({  
    executablePath: 'path/to/chrome/in/your/computer/naJaaaarrr',  
    headless: true,  
    args: ['--headless=new', '--disable-blink-features=AutomationControlled', '--no-sandbox', '--disable-setuid-sandbox'],  
    defaultViewport: { width: 1280, height: 720 },  
  });  

  page = await browser.newPage();  
  await page.goto(url);  

  let writableStream = fs.createWriteStream('path/to/chrome/in/your/computer/naJaaaarrr');  

  stream = await getStream(page, { audio: true, video: true });  

  stream.pipe(writableStream);  

  await new Promise(resolve => setTimeout(resolve, 10000));  

  stream.unpipe(writableStream);  
  stream.destroy();  

  await page.close();  
  await browser.close();  
}  

openBrowserGotoPageByURL('https://www.google.com/');

Ось так виглядає весь код для запису відео. Я встановив час запису на 10 хвилин, після чого все закривається. Ви побачите файл у вказаному шляху після того, як запустите програму.

pic

Після цього відкрийте відео, і ви побачите запис веб-сторінки, яку ви відкрили.

pic

Якщо ви хочете дізнатись більше про інші команди Puppeteer, в наступних статтях я поділюсь з вами цією інформацією. Не забудьте поставити лайк, поділитись статтею і підписатися (як жартуючи сказав). Дякую за те, що прочитали до кінця! 🚗

Перекладено з: สอนการใช้งาน Puppeteer-Stream Record Video With out Open Browser 🎈

Leave a Reply

Your email address will not be published. Required fields are marked *