import EventEmitter from "wolfy87-eventemitter"; import { Track } from "./track"; import { StatsReport } from "../../types"; /** * v1 版本的 Stream,只会拥有最多一个 videoTrack 以及一个 audioTrack */ export declare class Stream extends EventEmitter { /** * 表示这个流下所包含的所有 Track 的信息,用于精细控制每个 Track 的行为 * 详细结构可以查阅 TrackInfo */ trackList: Track[]; /** * 标记这个流这个流是由哪个用户产生的 * 注意,本地采集的流只有发布后这个字段才会有值 */ userId?: string; /** * 用于标记这个流是否调用了 release 方法,即表示这个流已经被释放 */ isDestroyed: boolean; /** * 兼容 v1 版本的成员类型 */ audioTrack?: MediaStreamTrack; videoTrack?: MediaStreamTrack; enableAudio: boolean; enableVideo: boolean; muteAudio: boolean; muteVideo: boolean; _audioTrack?: Track; _videoTrack?: Track; video?: HTMLVideoElement; audio?: HTMLAudioElement; readonly audioSourceIsLoop: boolean; private direction; constructor(tracks: Track[], direction?: "send" | "recv", userId?: string); /** * 目前只对采集的流有效 */ setVolume(v: number): void; /** * 将一个 Stream 对象置于页面上指定的元素下播放 * 会将将所有 track 都置于一个元素下播放 * * 如果想单独控制每一个 track 的播放行为 * 通过 trackList 获取 Track 对象,调用它的 play 方法 * @param container 指定一个 HTML 元素用于放置媒体元素 * @param muted 是否使用静音模式,如果为 true 就不会播放音频,仅播放视频,默认为 false。 */ play(container: HTMLElement, muted?: boolean): void; getCurrentTimeDomainData(): Uint8Array; getCurrentFrequencyData(): Uint8Array; getCurrentVolumeLevel(): number; getStats(): StatsReport; getCurrentFrameDataURL(): string; setAudioSourceLoop(isLoop: boolean): void; startAudioSource(): void; pauseAudioSource(): void; resumeAudioSource(): void; stopAudioSource(): void; getAudioSourceCurrentTime(): number; getAudioSourceDuration(): number; setAudioSourceCurrentTime(val: number): void; /** * 释放这个流下的所有资源,包括流和用于播放流的媒体元素 */ release(): void; private onAudioEnded; private onVideoEnded; private onAudioSourceStateChange; }