eview得流媒体得总体流程如下图所示:
现存在问题如下:
- 前端向httpserver服务请求视频:httpserver立马返回一个流地址。导致视频流还没推送上去。前端已经向livego请求拉流。导致无法获取到视频流。
- livego存在不稳定得情况。
- 前端页面无法检测到视频掉线的情况。
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6ImNoZW5nZ3VvIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6InNoaWp1bnB1IiwibGFuZ3VhZ2UiOiJ6aCIsImRpYWdyYW1EaXNwbGF5TmFtZSI6IiIsInNGaWxlSWQiOiIiLCJhdHRJZCI6Ijg5NDU5NDciLCJkaWFncmFtTmFtZSI6IuaAu+S9k+a1geWqkuS9k+acjeWKoea1geeoiyIsImFzcGVjdCI6IiIsImxpbmtzIjoiYXV0byIsImNlb05hbWUiOiJldmlld+a1geWqkuS9k+acjeWKoea1geeoi+ekuuaEj+WbviIsInRic3R5bGUiOiJ0b3AiLCJjYW5Db21tZW50IjpmYWxzZSwiZGlhZ3JhbVVybCI6IiIsImNzdkZpbGVVcmwiOiIiLCJib3JkZXIiOnRydWUsIm1heFNjYWxlIjoiMSIsIm93bmluZ1BhZ2VJZCI6ODk0NTk0NiwiZWRpdGFibGUiOmZhbHNlLCJjZW9JZCI6ODk0NTk0NiwicGFnZUlkIjoiIiwibGJveCI6dHJ1ZSwic2VydmVyQ29uZmlnIjp7ImVtYWlscHJldmlldyI6IjEifSwib2RyaXZlSWQiOiIiLCJyZXZpc2lvbiI6NCwibWFjcm9JZCI6ImYwZjViMDUzLTc2ZGUtNDcxMi05NWZhLTU2NzFjMGVjN2ExMCIsInByZXZpZXdOYW1lIjoi5oC75L2T5rWB5aqS5L2T5pyN5Yqh5rWB56iLLnBuZyIsImxpY2Vuc2VTdGF0dXMiOiJPSyIsInNlcnZpY2UiOiIiLCJpc1RlbXBsYXRlIjoiIiwid2lkdGgiOiIxMjMxIiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNTg0NTg1MzQ4MDAwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
PKPushStreamServer.exe服务的流程如下
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6ImNoZW5nZ3VvIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6InNoaWp1bnB1IiwibGFuZ3VhZ2UiOiJ6aCIsImRpYWdyYW1EaXNwbGF5TmFtZSI6IiIsInNGaWxlSWQiOiIiLCJhdHRJZCI6Ijg5NDU5NTIiLCJkaWFncmFtTmFtZSI6IlBLUHVzaFN0cmVhbVNlcnZlcua1geeoi+WbviIsImFzcGVjdCI6IiIsImxpbmtzIjoiYXV0byIsImNlb05hbWUiOiJldmlld+a1geWqkuS9k+acjeWKoea1geeoi+ekuuaEj+WbviIsInRic3R5bGUiOiJ0b3AiLCJjYW5Db21tZW50IjpmYWxzZSwiZGlhZ3JhbVVybCI6IiIsImNzdkZpbGVVcmwiOiIiLCJib3JkZXIiOnRydWUsIm1heFNjYWxlIjoiMSIsIm93bmluZ1BhZ2VJZCI6ODk0NTk0NiwiZWRpdGFibGUiOmZhbHNlLCJjZW9JZCI6ODk0NTk0NiwicGFnZUlkIjoiIiwibGJveCI6dHJ1ZSwic2VydmVyQ29uZmlnIjp7ImVtYWlscHJldmlldyI6IjEifSwib2RyaXZlSWQiOiIiLCJyZXZpc2lvbiI6MiwibWFjcm9JZCI6ImFjZjE2NWE3LThmY2YtNGI2My04YjYzLWJhMGFlODU1YThlOSIsInByZXZpZXdOYW1lIjoiUEtQdXNoU3RyZWFtU2VydmVy5rWB56iL5Zu+LnBuZyIsImxpY2Vuc2VTdGF0dXMiOiJPSyIsInNlcnZpY2UiOiIiLCJpc1RlbXBsYXRlIjoiIiwid2lkdGgiOiIxMjYxIiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNTg0NTg0NTg3MDAwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
信令线程池的实现流程图:
eyJleHRTcnZJbnRlZ1R5cGUiOiIiLCJnQ2xpZW50SWQiOiIiLCJjcmVhdG9yTmFtZSI6ImNoZW5nZ3VvIiwib3V0cHV0VHlwZSI6ImJsb2NrIiwibGFzdE1vZGlmaWVyTmFtZSI6ImNoZW5nZ3VvIiwibGFuZ3VhZ2UiOiJ6aCIsImRpYWdyYW1EaXNwbGF5TmFtZSI6IiIsInNGaWxlSWQiOiIiLCJhdHRJZCI6Ijg5NDYwNzciLCJkaWFncmFtTmFtZSI6IuS/oeS7pOe6v+eoi+axoOa1geeoiyIsImFzcGVjdCI6IiIsImxpbmtzIjoiYXV0byIsImNlb05hbWUiOiJldmlld+a1geWqkuS9k+acjeWKoea1geeoi+ekuuaEj+WbviIsInRic3R5bGUiOiJ0b3AiLCJjYW5Db21tZW50IjpmYWxzZSwiZGlhZ3JhbVVybCI6IiIsImNzdkZpbGVVcmwiOiIiLCJib3JkZXIiOnRydWUsIm1heFNjYWxlIjoiMSIsIm93bmluZ1BhZ2VJZCI6ODk0NTk0NiwiZWRpdGFibGUiOmZhbHNlLCJjZW9JZCI6ODk0NTk0NiwicGFnZUlkIjoiIiwibGJveCI6dHJ1ZSwic2VydmVyQ29uZmlnIjp7ImVtYWlscHJldmlldyI6IjEifSwib2RyaXZlSWQiOiIiLCJyZXZpc2lvbiI6NCwibWFjcm9JZCI6ImY4NWVlNDQ3LTZjODktNDUwZi04OGEwLWQ3YWY3MDYxYWY4NSIsInByZXZpZXdOYW1lIjoi5L+h5Luk57q/56iL5rGg5rWB56iLLnBuZyIsImxpY2Vuc2VTdGF0dXMiOiJPSyIsInNlcnZpY2UiOiIiLCJpc1RlbXBsYXRlIjoiIiwid2lkdGgiOiIxNzMxIiwic2ltcGxlVmlld2VyIjpmYWxzZSwibGFzdE1vZGlmaWVkIjoxNTg0ODY2MjcwMDAwLCJleGNlZWRQYWdlV2lkdGgiOmZhbHNlLCJvQ2xpZW50SWQiOiIifQ==
程序开发过程中常见的问题:
- 视频推流正常,但是显示视频端,视频显示的播放慢:
- 最大的原因是流的pts和dts的计算问题。每次推流的时候,都是pts和dts归0.开始推流的。在函数CalcPtsAndDts()。之前frame_index 每次多加了个1.导致视频流卡
- 在计算pts和dts的地方,程序异常:
- 调试发现:设置流的协议地方出错,setStreamInfo();使用默认参数即可。 导致out_stream的指针为空。异常。
程序异常修复记录:
2020-03-22:
- 修复解析json消息的地方。JSONMSG的消息未赋值摄像机名称。导致在打印日志的地方。异常。
2021-02-26的PKPushStreamServer的模块化重构:
- 接收VideoDispatchServer推送过来的消息的模块:分别做成动态库。对以后的通信模块做成可扩展。
需要统一的定义接收消息的公供结构体,通过回调函数回调到信令服务的接口信息。
定义结构体: cmdStruct
- pkhttpserver: 直接推送httpserver的模块消息
- pksubredis:订阅redis的消息通道获取消息