import { AudioEncodedFrame, ILiveRTMP, VideoEncodedFrame, PartailFeedbackSetting, StreamTrackType } from '../interface/index'; import AudioEncode from './AudioEncode'; import VideoEncode from './VideoEncode'; import AVSync from './AVSync'; import Analyse from './Analyse'; /** * responsibility * - 控制音视频解码 * - 视频编码参数 (分辨率、帧率、码率) * - 初始设置 * - 采集参数变化(track.getSetting)时调整 * - 推流网络带宽不足时feedback调整编码 * - 音频编码参数 (采样率、channel、码率) * - 编码音画同步控制 (时间戳管理) * - 接受发包反馈,动态调整编码配置 * */ export default class EncodeController { _core: ILiveRTMP; _audioEncode: AudioEncode; _videoEncode: VideoEncode; _avSync: AVSync; _analyse: Analyse; _gotFrame: boolean; constructor(core: ILiveRTMP); getStats(): { video: { sendBitrate: number; framesPerSecond: number; framesEncoded: number; keyFramesEncoded: number; }; audio: { sendBitrate: number; framesEncoded: number; }; }; init(): Promise; _bindEvents(): void; /** * * @param frame * @param setting 当前track正在应用的配置 */ _OnVideoCaptured: (frame: VideoFrame, setting: MediaTrackConstraintSet) => void; _videoSettingChanged(setting: MediaTrackConstraintSet): boolean; _OnVideoCaptureNoOutput: () => void; _OnAudioCaptured: (frame: AudioData) => void; _OnVideoEncoded: (frame: VideoEncodedFrame) => void; _OnAudioEncoded: (frame: AudioEncodedFrame) => void; _OnUpstreamFeedback: (fSetting: PartailFeedbackSetting) => void; _OnBitrateChanged: (kind: StreamTrackType, bitrate: number) => void; destroy(): void; }