CarpoFlowChart
2016-10-20 13:46:59 0 举报
CarpoFlowChart 是一款强大且灵活的流程图制作工具,它提供了丰富的模板和符号库,使得创建专业的流程图变得轻而易举。用户可以通过拖拽操作轻松地组合各种形状和箭头,以直观地表示复杂的业务流程、决策树或工作流程。此外,CarpoFlowChart 还支持多种导出格式,如 PNG、JPEG、PDF 等,方便您将流程图分享给团队成员或客户。同时,该工具还具备实时协作功能,让您能够与团队成员共同编辑和完善流程图。总之,CarpoFlowChart 是您绘制流程图的理想选择,无论您是项目经理、教师还是企业主,都能从中受益匪浅。
作者其他创作
大纲/内容
RTCP-NACKhandler
从RtpHandler中取出丢失队列,构建NACK并发送pusher
请求拉流地址
JitterBuffer动态缓存,丢包检测,音频丢包补偿,丢包隐藏前向带宽估算
连麦系统
Backup Packets(RTP) For Retransmit
构造RR
请求拉流
Carpo:23800
lost_list_
注:请求拉流需在RTCP-APP消息中附加自己的源video或audio SSRC, 依所拉取流类型而定
rtp/rtcp
sendtopuller
ACK
Carpo与Carpo之间转推细节:
udp
FlowSelectorLoop
RtpReceiver
for (iter := numOfPullers) { forwardPacketToPullers}
SFU (Selective Forwarding Unit)
调度
主播推流端
码率信息
Beware: StreamProcessor的创建是以ask push触发的,以ask stop push 或无数据超时销毁
标清
carpo1
cmdtype
支持推拉模式及纯音频模式,支持连麦服务之间互相推拉流支持客户端就近节点接入依自身带宽估计与考量各下行承受带宽调整上行码率
pop
先进动态缓存算法,丢包检测,实时音频opus->aac转码
cmd + addr
type
返回carpo地址
influence
ask pull
数据接收统计
CmdPacket
AddrInfo: send to ...data : udp data
rtp
注:每个源ssrc对应一个Reiver,即使仅作为puller
RTP/RED
TimeToSendSenderReport
udp cmd ack
FEC/RED handler
RtcpReceiver
取下一包
NACK丢包重传接收带宽汇报
RTCP
Singleton:CommandInterpreter
Y
packet
构造RR并发送pusher
stop push
UdpForward
主播拉流端
Carpo基本流程图:
backup
play
1.向pullers发送RTCP_BYE消息2.删除对应StreamProcessor
通过Register将当前puller所在的所有receiver中移除。
将丢失包seq值加入丢包队列lost_list_
TimeToSendNACK
Singleton<信息统计>
将carpo1地址加入对应StreamProcessor的pullers队列
SendTo 客户端
MediaReceiver
+ SSRC:uint32_t = 00000- pusher:socket_info- pullers:array<socket_addr>- packetQueue:queue- streamProcessCallback:std::thread
+ retransportPacket(nacklist):return
no packet
构造NACK
Stop Pull
SendPacket
在StreamProcessor中删除此puller
转推流
低清
SFU
RtpReceiverprocess arrived rtp packets
完整SDK(含采集,播放器)
统计数据
lost?
stop pull
ask push
Stop Push
处理接收的NACK
cmd queue
RtpPacket
构造REMB
StreamID: SourceFromdata : udp data
直播系统
高清
RTCP-SRhandler
rtcp/cmd
推流
发送pull命令
Nack-PacketLossDetect
read loop
Sleep(10ms)
支持平滑发送,避免关键帧造成瞬时带宽较高。opus音频编码(也可支持AAC)h264视频动态码率编码发送端带宽估计
停止推流
puller
Singleton:MessageDispatcher
TimeToSendREMB
无包可取?
pusher
发送流数据
仅连麦核心SDK
通过MediaReceiverKeeper通知相关MediaReceiver重传此包
注:Bye消息不需到达确认,因有超时机制
NO
移除相应media receiver
依RBE决定取包队列
Client
Singleton:数据统计类
RED Packet?
遍历发送给每个puller
超时未收到数据,或收到BYE消息,向pullers发送BYE消息,移除对应StreamProcessor
处理接收的REMB
carpo2
rtcp
返回ACK
....
PullerAgent
赋seq值
注:对于SR和RTP消息,由源SSRC对应的Receiver处理,其他类型的RTCP消息由目的SSRC对应的RECEIVER处理
TimeToSendRecvReport
依RBE模块估计的bitrate值与pullers REMB中最小的bitrate值对比,取最小者(此逻辑有待进一步完善)
RtcpReceiverprocess arrived rtcp packets
RTCP-RRhandler
No
yes
循环
Singleton:MediaReceiverRegister依SSRC找到MediaReceiver
构造SR并发送给pullers
从RtpHandler中获取bitrate信息,构建REMB并发送pusher
带宽估计

收藏

收藏
0 条评论
下一页
为你推荐
查看更多