puppeteer-stream
Version:
An Extension for Puppeteer to retrieve audio and/or video streams of a page
73 lines (72 loc) • 2.71 kB
TypeScript
/// <reference types="node" />
/// <reference types="node" />
import { LaunchOptions, Browser, Page, BrowserLaunchArgumentOptions, BrowserConnectOptions } from "puppeteer-core";
import { Transform } from "stream";
import WebSocket from "ws";
import { IncomingMessage } from "http";
type StreamLaunchOptions = LaunchOptions & BrowserLaunchArgumentOptions & BrowserConnectOptions & {
allowIncognito?: boolean;
} & {
closeDelay?: number;
} & {
extensionPath?: string;
};
export declare const wss: Promise<WebSocket.Server<typeof WebSocket, typeof IncomingMessage>>;
export declare function launch(arg1: StreamLaunchOptions | {
launch?: Function;
[key: string]: any;
}, opts?: StreamLaunchOptions): Promise<Browser>;
export type BrowserMimeType = "video/webm" | "video/webm;codecs=vp8" | "video/webm;codecs=vp9" | "video/webm;codecs=vp8.0" | "video/webm;codecs=vp9.0" | "video/webm;codecs=vp8,opus" | "video/webm;codecs=vp8,pcm" | "video/WEBM;codecs=VP8,OPUS" | "video/webm;codecs=vp9,opus" | "video/webm;codecs=vp8,vp9,opus" | "audio/webm" | "audio/webm;codecs=opus" | "audio/webm;codecs=pcm";
export type Constraints = {
mandatory?: MediaTrackConstraints;
optional?: MediaTrackConstraints;
};
interface TabQueryOptions {
active?: boolean;
audible?: boolean;
autoDiscardable?: boolean;
currentWindow?: boolean;
discarded?: boolean;
groupId?: number;
highlighted?: boolean;
index?: number;
lastFocusedWindow?: boolean;
muted?: boolean;
pinned?: boolean;
status?: TabStatus;
title?: string;
url?: string | string[];
windowId?: number;
windowType?: WindowType;
}
type TabStatus = "unloaded" | "loading" | "complete";
type WindowType = "normal" | "popup" | "panel" | "app" | "devtools";
export interface getStreamOptions {
audio: boolean;
video: boolean;
videoConstraints?: Constraints;
audioConstraints?: Constraints;
mimeType?: BrowserMimeType;
audioBitsPerSecond?: number;
videoBitsPerSecond?: number;
bitsPerSecond?: number;
frameSize?: number;
delay?: number;
/**
* Tab query options to target the correct tab,
* see [Chrome's extensions documentation](https://developer.chrome.com/docs/extensions/reference/api/tabs#method-query) for more info.
*/
tabQuery?: TabQueryOptions;
retry?: {
each?: number;
times?: number;
};
streamConfig?: {
highWaterMarkMB?: number;
immediateResume?: boolean;
closeTimeout?: number;
};
}
export declare function getExtensionPage(browser: Browser): Promise<Page>;
export declare function getStream(page: Page, opts: getStreamOptions): Promise<Transform>;
export {};