@startuml mediaflow-a
start
partition pushFlow {
:**采集**\n====\n 音频采集 \n----\n 视频采集;
#ffeeee:待处理队列}
:**处理**\n====\n 音频处理 \n----\n 视频处理;
#ffeeee:待编码队列}
:**编码**\n====\n 音频编码 \n----\n 视频编码;
#ffeeee:待推流队列}
:推流;
}
:流媒体服务;
partition pullFlow {
:拉流;
#ffeeee:待解码队列}
:**解码**\n====\n 音频解码 \n----\n 视频解码;
#ffeeee:待播放队列}
:**播放**\n====\n 音频播放 \n----\n 视频播放;
}
stop
@enduml
Web RTC 协商流程
@startuml webRTC-SDP-1
participant "用户1" as user1
participant "用户2" as user2
participant "信令服务" as signal
participant "ICE服务" as ICE
==服务链接==
user1 -> signal: conn
user2 -> signal: conn
==发送 Offer 并返回 Answer==
autonumber 1 1 " 0."
user1 --> user1: create PC
activate user1
user1 --> user1: add Stream
user1 --> user1: create Offer
user1 -> ICE: setLocalDescription
activate ICE
user1 -> signal: offer SDP
deactivate user1
activate signal
user2 <- signal: offer SDP
deactivate signal
activate user2
user2 --> user2: setRemoteDescription
user2 --> user2: create answer SDP
user2 -> ICE: setLocalDescription
user2 -> signal: answer SDP
deactivate user2
activate signal
user1 <- signal: answer SDP
deactivate signal
==Candidata==
autonumber 1 1 " 0."
ICE --> ICE : 计算 candidata , \n给出可以使用的链接方式
user1 <- ICE: 发送 candidata
deactivate ICE
activate user1
user1 -> signal: 将 candidata 同步给信令服务
deactivate user1
activate signal
user2 <- signal: 信令服务将 candidata 同步给user2
deactivate signal
@enduml