///
///
import { MediaDevices, Navigator } from '../imports/mediasoup';
import { LocalMediaStreamOptions } from './stream';
import { LocalAudioStream } from './stream/local/audio';
import { DataStreamOptions, LocalDataStream } from './stream/local/data';
import { LocalVideoStream } from './stream/local/video';
export declare class StreamFactory {
readonly navigator: Navigator;
private gst;
constructor(props?: ConstructorParameters[0]);
registerMediaDevices(props: ConstructorParameters[0]): void;
registerNodeGtkGst(gst: any): void;
registerAudioTestSrc({ wave, rtpProcessor, gst, }?: {
wave?: string;
rtpProcessor?: (b: Buffer) => Buffer;
gst?: any;
}): Promise<() => void>;
registerVideoTestSrc({ keyframeIntervalSec, codec, gst, }: {
keyframeIntervalSec?: number;
codec: 'vp8' | 'h264';
gst?: any;
}): Promise<() => void>;
/**
* @description [japanese] CameraのVideoStreamを作成する
*/
createCameraVideoStream(options?: VideoMediaTrackConstraints & Partial): Promise;
/**
* @description [japanese] マイクのAudioStreamを作成する
*/
createMicrophoneAudioStream(options?: AudioMediaTrackConstraints & Partial): Promise;
/**
* @description [japanese]
* PCブラウザでのみ利用可能なAPI。
* VideoStreamは常に取得される(AudioStreamのみ取得することはできない)
* audioオプションを有効にするとAudioStreamを取得することができる。
* audioオプションはWindowsのChromeにしか対応しておらず、
* それ以外の環境では有効にしても戻り値のaudioにはundefinedが返される。
*/
createDisplayStreams(options?: T): Promise<{
video: LocalVideoStream;
audio: T extends {
audio: infer U;
} ? U extends false | undefined | null ? undefined : LocalAudioStream | undefined : undefined;
}>;
/**
* @description [japanese] DataStreamを作成する
*/
createDataStream(options?: DataStreamOptions): Promise;
/**
* @description [japanese] CameraのVideoStreamとマイクのAudioStreamを作成する
*/
createMicrophoneAudioAndCameraStream({ audio, video, }?: {
audio?: AudioMediaTrackConstraints & Partial;
video?: VideoMediaTrackConstraints & Partial;
}): Promise<{
audio: LocalAudioStream;
video: LocalVideoStream;
}>;
}
export declare const SkyWayStreamFactory: StreamFactory;
/**@internal */
export declare class MediaDevice {
id: string;
label: string;
kind: MediaDeviceKind;
/**@private */
constructor(info: MediaDeviceInfo);
}
/**
* @description [japanese] ブラウザによって対応しているパラメータが異なるので、必要に応じて確認してください
*/
export declare type VideoMediaTrackConstraints = {
aspectRatio?: ConstrainDouble;
facingMode?: ConstrainDOMString;
frameRate?: ConstrainDouble;
height?: ConstrainULong;
width?: ConstrainULong;
deviceId?: ConstrainDOMString;
};
/**
* @description [japanese] ブラウザによって対応しているパラメータが異なるので、必要に応じて確認してください
*/
export declare type AudioMediaTrackConstraints = {
autoGainControl?: ConstrainBoolean;
channelCount?: ConstrainULong;
echoCancellation?: ConstrainBoolean;
latency?: ConstrainDouble;
noiseSuppression?: ConstrainBoolean;
sampleRate?: ConstrainULong;
sampleSize?: ConstrainULong;
suppressLocalAudioPlayback?: ConstrainBoolean;
deviceId?: ConstrainDOMString;
/**
* @description [english] Non-standard. Check browser support before using.
*/
volume?: number;
};
export declare type DisplayMediaTrackConstraints = VideoMediaTrackConstraints & {
/** @description [japanese] 選択画面で最初に表示するキャプチャー対象の指定*/
displaySurface?: 'monitor' | 'window' | 'browser';
};
export declare type DisplayStreamOptions = {
audio?: (AudioMediaTrackConstraints & Partial>) | boolean;
video?: DisplayMediaTrackConstraints & VideoMediaTrackConstraints & Partial>;
};
//# sourceMappingURL=factory.d.ts.map