1 主要的类
RTCPeerConnection:用于建立点对点连接,实现音视频传输和数据通信。它负责协商媒体传输的参数、处理ICE候选项以及创建和管理媒体通道。
RTCDataChannel:用于在两个端点之间传输任意类型的数据。通过该通道,可以实现实时的数据传输,比如聊天消息、文件传输等。
RTCSessionDescription:用于表示连接的配置信息,包括媒体类型、媒体协议和加密参数等。在建立连接时,两端交换此类信息以协商连接配置。
RTCIceCandidate:表示网络上可用的通信地址,用于在两个端点之间发现对方的网络地址并协商连接。
RTCMediaStream:表示包含音频和视频轨道的媒体流。通过添加和移除轨道,可以实现音视频的采集和播放。
RTCVideoTrack:表示视频轨道,用于捕获和播放视频流。它可以连接到本地或远程的摄像头、视频文件或网络流。
RTCAudioTrack:表示音频轨道,用于捕获和播放音频流。它可以连接到本地或远程的麦克风或音频文件。
RTCRtpTransceiver:用于管理媒体的收发。它可以在RTCPeerConnection中添加、移除和控制不同媒体轨道的传输。
RTCStatsReport:用于收集和报告与媒体传输相关的统计信息,例如带宽、丢包率、延迟等。
RTCVideoCodec:用于对视频进行编解码。WebRTC支持多种视频编解码器,如VP8、VP9、H.264等。
RTCAudioCodec:用于对音频进行编解码。WebRTC支持多种音频编解码器,如Opus、G.711、G.722等。
2 主要类和初始化会话设置的概述:
初始化WebRTC会话:
在使用WebRTC之前,需要初始化WebRTC会话,以确保WebRTC框架的正确设置和配置。初始化步骤通常包括以下内容:
创建PeerConnectionFactory:通过创建PeerConnectionFactory来初始化WebRTC会话,它负责管理音视频工厂和创建PeerConnection。
配置媒体约束:在创建PeerConnection时,可以设置媒体约束来指定音视频的参数,如分辨率、帧率、码率等。
初始化本地媒体流:通过获取本地音视频设备,如摄像头和麦克风,来初始化本地媒体流。
建立链接:
在WebRTC中,要建立点对点的链接,需要使用RTCPeerConnection类。建立链接的主要步骤包括:
创建RTCPeerConnection:使用PeerConnectionFactory创建RTCPeerConnection实例。
添加媒体流:将本地的音视频媒体流添加到RTCPeerConnection中,这样就可以发送本地的音视频数据。
创建和处理ICE候选项:RTCPeerConnection会自动发现对方的网络地址,通过ICE(Interactive Connectivity Establishment)协议来实现。
设置SessionDescription:通过协商SDP(Session Description Protocol)来交换连接配置信息,设置本地和远程的SessionDescription。
建立连接:通过触发RTCPeerConnection的createOffer和createAnswer方法,实现SDP的协商过程,建立连接。
设置ICE候选项:在连接过程中,通过设置ICE候选项,将本地和远程的网络地址交换,从而建立点对点的链接。
音视频传输:
音视频传输是WebRTC的核心功能之一。它通过RTCPeerConnection来实现。主要步骤包括:
添加媒体流:将本地的音视频媒体流添加到RTCPeerConnection中,使其可以传输本地的音视频数据。
接收远程媒体流:通过RTCPeerConnection的onaddstream事件,监听远程媒体流的到来,并进行处理。
传输音视频数据:通过RTCPeerConnection的addTrack和addStream方法,将本地的音视频数据传输给远程端,同时从远程端接收音视频数据。
数据打包:
数据打包是通过RTCDataChannel类来实现的,它可以实现点对点的实时数据传输。主要步骤包括:
创建RTCDataChannel:通过RTCPeerConnection的createDataChannel方法来创建RTCDataChannel实例。
发送数据:使用RTCDataChannel的send方法,将数据发送给远程端。
接收数据:通过监听RTCDataChannel的onmessage事件,接收远程端发送的数据。