import { ParticipantId } from '../types/Participant'; import { StatFirstMediaReceived } from './stat/StatFirstMediaReceived'; /** * Единый AudioOutput поддерживающий p2p, audioMix и transparent-audio */ export default class AudioOutput { protected _audioElement: HTMLAudioElement | null; private _audioTracks; private readonly _allowMultipleTracks; private _volume; private readonly _features; private readonly _statFirstMediaReceived; constructor(statFirstMediaReceived: StatFirstMediaReceived, allowMultipleTracks?: boolean); add(participantId: ParticipantId, track: MediaStreamTrack): void; remove(participantId: ParticipantId, track: MediaStreamTrack): void; get volume(): number; set volume(volume: number); destroy(): void; /** изменяем устройство для воспроизведения аудио */ changeOutput(): Promise; protected _getTracks(): MediaStreamTrack[]; protected _initAudioElement(): void; protected _stopAudioElement(): void; private _addTrackToAudioElement; private _removeTrackFromAudioElement; private _clearTracks; }