哈哈

简介

什么是 GB28181 回放流(TF卡流)

关于国标 GB28181 国标协议介绍

工作原理

回放流也是一种流,只不过倍率播放,暂停->播放的逻辑是流媒体端控制的,播放器端是被动的接受流数据。

暂停-播放-暂停逻辑

在回放过程中,客户端通过 发送 SIP INFO 消息 来控制回放逻辑。GB28181 标准规定了几种常用的控制指令:

  1. Pause 指令,NVR 停止推送 RTP 流,但保持会话。
  2. Resume 指令,NVR 恢复推送 RTP 流。

例如暂停逻辑:流媒体端暂停推流,ws链接是保存不断的(有些业务需要心跳保存),然后恢复播放的时候,流媒体端会继续推流给播放器,播放器继续接受数据进行渲染播放。

播放-暂停实现逻辑:

  1. 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Pause 命令给流媒体服务器。
  2. 流媒体服务器收到 Pause 命令后,暂停推送 RTP 流
  3. 前端在ajax回调之后,调用播放器的暂停方法,播放器停止渲染画面(流不断开)。

暂停-播放实现逻辑:

  1. 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Resume 命令给流媒体服务器。
  2. 流媒体服务器收到 Resume 命令后,继续按原速推送 RTP 流。
  3. 前端在ajax回调之后,调用播放器的播放方法,播放器继续渲染画面。

倍率播放

GB28181 标准通过控制指令 Play 指令里带 Scale 参数,例如 Scale: 2 表示 2 倍速。

  1. 支持的倍速通常有限(1/2、2、4、8 倍等),由设备端实现。
  2. 原理是设备端控制读取码流的速度,而不是客户端自己加速。

例如倍率播放:流媒体端控制推流的速率,播放器端接受数据按照倍率进行渲染播放。

实现逻辑:

  1. 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Play 指令给流媒体服务器。命令里会有一个 scale 倍率参数(例如 2 表示 2 倍速,0.5 表示 0.5 倍速)。
  2. 流媒体服务器收到命令后,调整推流的速率(例如 2 倍速时,推流速度加快,0.5 倍速时,推流速度减慢)。
  3. 播放器端需要在ajax 回调之后设置播放器的播放倍率。

seek逻辑

GB28181 标准通过控制指令 Play 指令里带 Range 参数,例如:Range: clock=20250923T120000Z-20250923T121000Z

例如seek逻辑:是业务层通过调用流媒体服务器的seek接口,然后流媒体服务器返回seek后的数据,播放器端接受数据进行渲染播放。

实现逻辑:

  1. 前端发起ajax请求到服务器端,服务器端通过 SIP 信令发送 Play 指令给流媒体服务器。命令里会有一个 Range 参数(例如:Range: clock=20250923T120000Z-20250923T121000Z)。
  2. 流媒体服务器收到命令后,从指定时间点开始推送 RTP 流。
  3. 播放器端在ajax 回调之后,调用播放器的清除缓冲区方法,然后继续渲染画面。

小结

主要业务逻辑是流媒体服务器支持的,播放器只是配合流媒体服务器的逻辑进行播放。

与点播文件的区别

点播逻辑是播放器端控制的,流媒体服务器只是提供文件的下载,播放器下载完文件后,播放器自己控制播放逻辑。

暂停逻辑

例如暂停逻辑:播放器端暂停请求文件,然后播放器端自己控制暂停逻辑。

倍率播放

例如倍率播放:播放器端按照倍率来请求文件片段,然后本地进行倍率播放。

seek逻辑

例如seek逻辑:播放器端请求seek的文件片段,然后本地进行seek播放。

回放流(TF卡流)与点播文件播放器选择

回放流(TF卡流)

解决方案:

  1. JessibucaPro

点播文件

解决方案:

  1. video.js
  2. xgplayer.js
  3. JessibucaProVod