哈哈
简介
什么是 GB28181 回放流(TF卡流)
关于国标 GB28181 国标协议介绍
工作原理
回放流也是一种流,只不过倍率播放,暂停->播放的逻辑是流媒体端控制的,播放器端是被动的接受流数据。
暂停-播放-暂停逻辑
在回放过程中,客户端通过 发送 SIP INFO 消息 来控制回放逻辑。GB28181 标准规定了几种常用的控制指令:
- Pause 指令,NVR 停止推送 RTP 流,但保持会话。
- Resume 指令,NVR 恢复推送 RTP 流。
例如暂停逻辑:流媒体端暂停推流,ws链接是保存不断的(有些业务需要心跳保存),然后恢复播放的时候,流媒体端会继续推流给播放器,播放器继续接受数据进行渲染播放。
播放-暂停实现逻辑:
- 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Pause 命令给流媒体服务器。
- 流媒体服务器收到 Pause 命令后,暂停推送 RTP 流
- 前端在ajax回调之后,调用播放器的暂停方法,播放器停止渲染画面(流不断开)。
暂停-播放实现逻辑:
- 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Resume 命令给流媒体服务器。
- 流媒体服务器收到 Resume 命令后,继续按原速推送 RTP 流。
- 前端在ajax回调之后,调用播放器的播放方法,播放器继续渲染画面。
倍率播放
GB28181 标准通过控制指令 Play 指令
里带 Scale 参数,例如 Scale: 2 表示 2 倍速。
- 支持的倍速通常有限(1/2、2、4、8 倍等),由设备端实现。
- 原理是设备端控制读取码流的速度,而不是客户端自己加速。
例如倍率播放:流媒体端控制推流的速率,播放器端接受数据按照倍率进行渲染播放。
实现逻辑:
- 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Play 指令给流媒体服务器。命令里会有一个 scale 倍率参数(例如 2 表示 2 倍速,0.5 表示 0.5 倍速)。
- 流媒体服务器收到命令后,调整推流的速率(例如 2 倍速时,推流速度加快,0.5 倍速时,推流速度减慢)。
- 播放器端需要在ajax 回调之后设置播放器的播放倍率。
seek逻辑
GB28181 标准通过控制指令 Play 指令
里带 Range 参数,例如:Range: clock=20250923T120000Z-20250923T121000Z
例如seek逻辑:是业务层通过调用流媒体服务器的seek接口,然后流媒体服务器返回seek后的数据,播放器端接受数据进行渲染播放。
实现逻辑:
- 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Play 指令给流媒体服务器。命令里会有一个 Range 参数(例如:Range: clock=20250923T120000Z-20250923T121000Z)。
- 流媒体服务器收到命令后,从指定时间点开始推送 RTP 流。
- 播放器端在ajax 回调之后,调用播放器的清除缓冲区方法,然后继续渲染画面。
小结
主要业务逻辑是流媒体服务器支持的,播放器只是配合流媒体服务器的逻辑进行播放。
与点播文件的区别
点播逻辑是播放器端控制的,流媒体服务器只是提供文件的下载,播放器下载完文件后,播放器自己控制播放逻辑。
暂停逻辑
例如暂停逻辑:播放器端暂停请求文件,然后播放器端自己控制暂停逻辑。
倍率播放
例如倍率播放:播放器端按照倍率来请求文件片段,然后本地进行倍率播放。
seek逻辑
例如seek逻辑:播放器端请求seek的文件片段,然后本地进行seek播放。
回放流(TF卡流)与点播文件播放器选择
回放流(TF卡流)
解决方案:
点播文件
解决方案: