- 62
- 0
- 约2.2千字
- 约 4页
- 2021-10-21 发布于广东
- 举报
一.整个录制框架
二.Performer的主要工作流程
代码路径: /repos/src/cloud_storage/CRS/trunk/performer
包发布搜索: crs_performer
performer通过与controlcenter的MQ的回调PerformerCtl.Report定期汇报当前订阅任务给center,第一次汇报可以任务是performer的注册(perfomerManager.go)
performer注册到deamon中,通过返回的服务list找到视频前端gateway的ipList存到gatewayIpList中,后续订阅任务需要用到这个gatewayIpList(perfomerManager.go)
controlcenter的MQ通过回调调用PerformerRPCHandle.StartSubscribe进入performer的订阅任务处理入口,回调调用参数中携带了任务信息,处理这个订阅任务(perfomerManager.go)
performer开启一个go协程TaskMainProc(taskManager.go),处理这个订阅任务的信令等(信令流程详见“与媒体视频前端交互protocal”文件夹)。创建信令通道proxyCoon,首先登陆gateway(gatewayIpList中的项),登陆成功后等待NotifyCurrentStreamInfo流开始通知消息,如果NotifyCurrentStreamInfo中的流不为0,则发送SubScribeCurrentStream订阅请求,等待服务器返回ServerKeysResData。
服务器正确返回ServerKeysResData后,创建媒体通道mediaCoon,新建四个协程ProcessMediaData(),RecordStreamMainProc(),SegmentProcess(),StatReportMainProc()成功后,通过媒体通道发送之前服务器返回的ServerKeysResData,媒体链接就会收到媒体数据流。
ProcessMediaData协程主要负责mediaCoon媒体链接的flv数据收流。接收到新的一帧flv数据,按照flv标准(详见video_file_format_spec_v10_1文档)解析出其中的pts,dts,音视频裸码流,sps,pps等信息,封装成一帧数据frameData,写入到有缓存的mediaChannel通道中
RecordStreamMainProc协程主要负责从通道mediaChannel接收一帧帧的frameData数据,分析当前是否满足流切片条件,达到切片条件后再将frameData封装成ts格式并写入xxx0.ts xxx1.ts等文件,同时将生成的ts切片信息segmentData写入通道m_outSegmentChan
其中的切片条件判断分析可以参考文档”切片条件分析2.vsd”,具体切片流程图可以参考” 录播封装切割视频流程___改造.vsd”
将一帧frameData裸码流数据封装ts代码参考了ffmpeg的内ts的封装代码。
SegmentMainProc()协程,主要负责不断从SegmentChan通道中接受已经切好片的切片信息进行后续处理,包括
将生成的切片上传到bs2上 uploadFile()
解析切片中的flv索引信息,存储到flv索引文件中(这个是为了在线封装flv使用) processFlvIndexData()
将切片信息通过MQ通知dbProxy模块,更新切片信息到数据库中 UpdateDBVideoInfo() UpdateDBTsItem()
将切片信息通过MQ通知欧阳的recordComplete模块 NotifyRCSegmentInfo()
如果检测到bs2需要切换文件名,通过MQ通知center模块,以防止performer异常,让center去提交文件:NotifyCenterFileInfo()
StatReportMainProc()协程主要负责汇报警告或者错误消息,其他模块需要填写警告信息的地方将报警数据StreamReportMsg写入streamReportChan通道中,将文件上传信息报告uploadReportMsg写入uploadReportChan通道中。此协程负责消费两个通道,并通过MQ通知到报警处理节点。
controlcenter的MQ通过回调调用PerformerRPCHandle.StopSubscribe来结束一个订阅,通过任务id找到这个任务后,performerManager通过centerStopChannel通道通知到这个任务的taskManager的主协程,然后通知到
您可能关注的文档
- 辽宁省葫芦岛市协作校2021-2022学年高三上学期第一次考试数学试题 (1).pdf
- 【数学】2021年10月浙江省云峰联盟高三联考试题.pdf
- 2022天一大联考高三上学期阶段性测试 数学 10.19-20.pdf
- 科研创新训练过程记录-III.docx
- 紫外光谱测验-1.docx
- 会计基础练习题含解析(第1章练习).pdf
- 会计基础练习题含解析(第2章练习).pdf
- 10安全生产措施费使用计划.docx
- 1#电缆沟电缆架安装.docx
- 1#电缆管配置敷设验收.docx
- 中国国家标准 GB/Z 37551.300-2026海洋能 波浪能、潮流能及其他水流能转换装置 第300部分:河流能转换装置发电性能评估.pdf
- GB/T 44937.3-2025集成电路 电磁发射测量 第3部分:辐射发射测量 表面扫描法.pdf
- 中国国家标准 GB/T 44937.3-2025集成电路 电磁发射测量 第3部分:辐射发射测量 表面扫描法.pdf
- 《GB/T 44937.3-2025集成电路 电磁发射测量 第3部分:辐射发射测量 表面扫描法》.pdf
- 中国国家标准 GB/T 44937.1-2025集成电路 电磁发射测量 第1部分:通用条件和定义.pdf
- GB/T 44937.1-2025集成电路 电磁发射测量 第1部分:通用条件和定义.pdf
- 《GB/T 44937.1-2025集成电路 电磁发射测量 第1部分:通用条件和定义》.pdf
- 中国国家标准 GB/T 4937.37-2025半导体器件 机械和气候试验方法 第37部分:采用加速度计的板级跌落试验方法.pdf
- 《GB/T 4937.10-2025半导体器件 机械和气候试验方法 第10部分:机械冲击 器件和组件》.pdf
- 中国国家标准 GB/T 44937.2-2025集成电路 电磁发射测量 第2部分:辐射发射测量TEM小室和宽带TEM小室法.pdf
原创力文档

文档评论(0)