公开/公告号CN105828109A
专利类型发明专利
公开/公告日2016-08-03
原文格式PDF
申请/专利权人 广东亿迅科技有限公司;
申请/专利号CN201510816316.2
申请日2015-11-20
分类号H04N21/2387(20110101);H04N21/239(20110101);H04N21/433(20110101);H04N21/4402(20110101);H04N21/6437(20110101);
代理机构44242 深圳市精英专利事务所;
代理人冯筠
地址 510000 广东省广州市天河区龙口中路130号
入库时间 2023-06-19 00:13:49
法律状态公告日
法律状态信息
法律状态
2018-12-25
授权
授权
2016-08-31
实质审查的生效 IPC(主分类):H04N21/2387 申请日:20151120
实质审查的生效
2016-08-03
公开
公开
技术领域
本发明涉及视频监控技术领域,尤其涉及一种服务器、客户端及基于 RTSP/RTP的播放系统。
背景技术
视频回放已经成为近年来视频监控的主要手段,而现有的视频回放的技术 手段主要有如下两种:
第一种为采用私有协议传输视频流。譬如:专利申请号为: CN201310544305.4,专利名称为:一种基于硬盘录像机的视频倒序回查方法。 该专利申请公开了“在视频顺序播放时,如果想从某个时间点开始倒放,先停止 顺序播放,获取现在的视频播放结束时间,将该时间点确定为视频倒放开始时 间;启动下载线程,从倒放开始时间算起,每5秒钟下载一段视频,直到将设 定的倒放时间段内的视频倒放完毕,获得该倒放停止点的时间点;然后从倒放 停止的时间点开始进入视频的顺序播放。”该技术方案中,客户端每隔5S钟下 载一段视频,并对该视频进行解码后输出。该技术方案客户端频繁的下载请求 会增大被下载端的工作量,降低被下载端的响应速度,此外,该技术方案中每 隔5秒下载一段视频的模式不具有通用性,应用范围受到限制。
第二种为服务器端解码视频,倒序发送解码后的视频画面至客户端。譬如: 专利申请号为:CN201410048139.3,专利名称为:一种HTTP流媒体实现快进 快退播放的方法和系统。该专利申请公开了“当用户请求快进快退播放时,在该 请求中携带快进快退的速度和开始的时间点,则根据快进快退的速度和开始的 时间点向客户端顺序返回视频文件的截图。本发明通过服务器端向客户端投放 一组截图代替视频,客户端按顺序快速显示截图代替视频播放,从而实现快进 快退。”该技术方案中,服务器端解码视频帧,增大了服务器端的工作量,降低 了服务器端的处理速率。此外,发送解码后的图片信息至客户端,增加了网络 传输的数据量,以致降低了网络传输速度以及提升了网络占用量。
综上所述,如何在不影响服务器端的处理效率和网络传输速率的前提下, 拓宽应用范围,是当前亟待解决的上技术问题。
发明内容
有鉴于此,实有必要提供一种不影响服务器端的处理效率和网络传输速率 的前提下,拓宽应用范围的基于RTSP/RTP的播放系统,其中,该基于RTSP/RTP 的播放系统包括服务器和客户端。
一种服务器,包括:
接收模块,用于接收客户端发送的倒序播放请求,倒序播放请求包括起始 位置信息和结束位置信息,起始位置信息对应倒序开始视频帧,结束位置信息 对应倒序结束视频帧,倒序开始视频帧与倒序结束视频帧之间包括多个关键帧。
判断模块,用于判断倒序开始视频帧是否为关键帧。
定位模块,用于若倒序开始视频帧非关键帧,定位与倒序开始视频帧距离 最近且位于倒序开始视频帧与倒序结束视频帧之间的第n关键帧,其中,n=1。
发送模块,用于从第n关键帧开始逐帧发送第n关键帧与倒序开始视频帧 之间的所有视频帧至客户端。
优选地,服务器还包括重定位模块。
定位模块,还用于若第n关键帧与倒序开始视频之间的视频帧发送完成后, 定位与第n关键帧距离最近且位于倒序结束视频帧与第n关键帧之间的第n+1 关键帧。
优选地,发送模块,还用于逐帧对视频帧进行编码得到视频数据包且逐个 发送该视频数据包至客户端。
发送模块,还用于若第n+1关键帧定位成功,从第n+1关键帧开始逐帧发 送第n+1关键帧与第n关键帧之间的所有视频帧至客户端,且发送每一个视频 帧之间休眠预设时间段,预设时间段与显示视频帧的帧率成反比。
重定位模块,用于第n+1关键帧与第n关键帧之间的所有视频帧发送完成 后,n++,定位与第n关键帧距离最近且位于倒序结束视频帧与第n关键帧之 间的第n+1关键帧,重复执行发送模块和重定位模块,直至发送倒序结束视频 帧至客户端。
优选地,发送模块,用于若倒序开始视频帧是关键帧,发送倒序开始视频 帧至客户端。
一种客户端,客户端用于解码并输出上述服务器发送的视频帧。客户端包 括:
存储空间数组创建模块,用于创建包括多个存储单元的存储空间数组a且 设置每一个存储单元的标志位为空闲,存储单元的个数为GopSize*2。
接收模块,用于从第n关键帧开始逐帧接收第n关键帧与倒序开始视频帧 之间的每一个视频帧,其中n=1。
解码模块,用于每接收完成一个视频帧,利用第n关键帧解码视频帧以得 到视频画面且记录视频帧的解码时间。
存储模块,用于每解码完成一个视频帧,存储与视频帧对应的视频画面至 标志位为空闲的存储单元中且视频画面存储完成后,修改存储视频画面的存储 单元的标志位为未显示。
标志位修订模块,用于接收到第n+1关键帧时,修改已存储至存储空间数 组a中,且标志位为未显示的所有存储单元的标志位为待显示。
输出模块,用于标志位为未显示的所有存储单元的标志位由未显示修改为 待显示时,对标志位为待显示的所有存储单元中的视频画面按照解码时间的先 后进行排序,并从解码时间最晚的视频画面开始输出且每输出一帧视频画面之 后休眠预设时间段,预设时间段与显示视频帧的帧率成反比。
标志位修订模块,还用于每输出一帧视频画面后,修改存储视频画面的存 储单元的标志位为空闲。
优选地,
接收模块,用于从第n+1关键帧开始逐帧接收第n+1关键帧与第n关键帧 之间的每一个视频帧。
解码模块,用于每接收完成一个视频帧,利用第n+1关键帧解码视频帧以 得到视频画面且记录视频帧的解码时间。
存储模块,用于每解码完成一个视频帧,存储与视频帧对应的视频画面至 标志位为空闲的存储单元中且视频画面存储完成后,修改存储视频画面的存储 单元的标志位为未显示。
标志位修订模块,用于接收到第n+2关键帧时,修改已存储至存储空间数 组a中,且标志位为未显示的所有存储单元的标志位为待显示。
输出模块,用于标志位为未显示的所有存储单元的标志位由未显示修改为 待显示时,对标志位为待显示的所有存储单元中的视频画面按照解码时间的先 后进行排序,并从解码时间最晚的视频画面开始输出且每输出一帧视频画面之 后休眠预设时间段,预设时间段与显示视频帧的帧率成反比。
标志位修订模块,还用于每输出一帧视频画面,修改存储视频画面的存储 单元的标志位为空闲。
n++,重复执行接收模块、解码模块、存储模块、标志位修订模块和输出模 块,直至接收模块收到倒序结束视频帧。
优选地,输出模块,用于若倒序开始视频帧是关键帧,输出关键帧解码后 的视频画面。
一种基于RTSP/RTP的播放系统,其包括上述的服务器和上述的客户端, 服务器与客户端之间通过网络通信连接
当倒序开始视频帧非关键帧时,服务器从第1关键帧开始逐帧发送该第1 关键帧与倒序开始视频帧之间每一个视频帧至客户端。本发明通过采用 RTSP/RTP协议传输视频帧至客户端,因此达到了开发难度小、协议通用以及 应用范围广的技术效果。
附图说明
图1为本发明基于RTSP/RTP的播放系统一种实施例的方框结构示意图。
图2为服务器处理倒序播放请求一种实施例的流程示意图。
图3为客户端倒序播放视频帧一种实施例的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅 仅用以解释本发明,并不用来限定本发明。
图1展示了本发明基于RTSP/RTP的播放系统的一种实施例。在本实施例 中,该基于RTSP/RTP的播放系统包括服务器1和客户端2,该服务器1与该 客户端2之间通过网络通信连接。其中,服务器1包括接收模块11、判断模 块12、定位模块13、发送模块14和重定位模块15。该客户端2包括存储空 间数组创建模块21、接收模块22、解码模块23、存储模块24、标志位修订 模块25和输出模块26。
服务器1响应客户端2的倒序播放请求时:需要说明的是:第1关键帧与 倒序开始视频帧之间的所有视频帧构成第一个GOP。服务器1逐帧从第1关键 帧开始发送第一GOP的视频帧至客户端2时,视频帧之间无需休眠预设时间 段。所谓GOP,即视频帧的编码单位,每一个视频帧为了便于传输和储存,都 会进行编码以得到视频压缩数据包。此外,假设一个GOP中包括GopSize个视 频帧,其中,有1个关键帧和GopSize-1个参考帧。此外,关键帧(I帧)和 参考帧(P帧):关键帧(I帧)包含有所有的视频画面细节,而参考帧(P帧) 则保存基于关键帧的变化信息。关键帧(I帧)可以直接解码,参考帧(P帧) 解码前必须要有当前GOP组中关键帧的信息和本参考帧之前的参考帧。
接收模块11,用于接收客户端2发送的倒序播放请求,倒序播放请求包括 起始位置信息和结束位置信息,起始位置信息对应倒序开始视频帧,结束位置 信息对应倒序结束视频帧,倒序开始视频帧与倒序结束视频帧之间包括多个关 键帧。判断模块12,用于判断倒序开始视频帧是否为关键帧。若倒序开始视频 帧非关键帧,定位模块13,用于定位与倒序开始视频帧距离最近且位于倒序开 始视频帧与倒序结束视频帧之间的第n关键帧,其中,n=1。发送模块14,用 于从第n关键帧开始逐帧发送第n关键帧与倒序开始视频帧之间的所有视频帧 至客户端2。此外,若倒序开始视频帧是关键帧,发送倒序开始视频帧至客户 端2。
在某些实施例中,例如本实施例中,发送模块14,还用于逐帧对视频帧进 行编码得到视频数据包且逐个发送该视频数据包至客户端2。本实施例通过发 送视频数据包至客户端2,减少了传输的数据量,以致节省了网络资源。
另一方面,第n关键帧与第n+1关键帧之间的所有视频帧构成第N个GOP, 其中n=1,N=2。服务器1逐帧从第n+1关键帧开始发送第N个GOP的视频 帧至客户端2时,视频帧之间休眠预设时间段。此外,第N个GOP发送完成 后,n++,N++。所谓预设时间段与显示视频帧的帧率成反比。假设帧率为H, 预设时间段为T,则T=A/H,其中A为常数。
定位模块13,还用于若第n关键帧与倒序开始视频之间的视频帧发送完成 后,定位与第n关键帧距离最近且位于倒序结束视频帧与第n关键帧之间的第 n+1关键帧。发送模块14,还用于若第n+1关键帧定位成功,从第n+1关键帧 开始逐帧发送第n+1关键帧与第n关键帧之间的所有视频帧至客户端2,且发 送每一个视频帧之间休眠预设时间段,预设时间段与显示视频帧的帧率成反比。 重定位模块15,用于第n+1关键帧与第n关键帧之间的所有视频帧发送完成后, n++,定位与第n关键帧距离最近且位于倒序结束视频帧与第n关键帧之间的 第n+1关键帧,重复执行发送模块14和重定位模块15,直至发送倒序结束视 频帧至客户端2。
本实施例通过在发送第二个GOP开始,在该GOP的每一个视频帧之间休 眠预设时间段,避免服务器1出现CPU占用率过高的问题。
本实施例的服务器1响应客户端2的顺序播放请求时:服务器1逐帧发送 视频帧至客户端2。
客户端2倒序播放视频帧时:存储空间数组创建模块21,用于创建包括多 个存储单元的存储空间数组a且设置每一个存储单元的标志位为空闲,存储单 元的个数为GopSize*2。接收模块22,用于从第n关键帧开始逐帧接收第n关 键帧与倒序开始视频帧之间的每一个视频帧,其中n=1。解码模块23,用于每 接收完成一个视频帧,利用第n关键帧解码视频帧以得到视频画面且记录视频 帧的解码时间。存储模块24,用于每解码完成一个视频帧,存储与视频帧对应 的视频画面至标志位为空闲的存储单元中且视频画面存储完成后,修改存储视 频画面的存储单元的标志位为未显示。标志位修订模块25,用于接收到第n+1 关键帧时,修改已存储至存储空间数组a中,且标志位为未显示的所有存储单 元的标志位为待显示。输出模块26,用于标志位为未显示的所有存储单元的标 志位由未显示修改为待显示时,对标志位为待显示的所有存储单元中的视频画 面按照解码时间的先后进行排序,并从解码时间最晚的视频画面开始输出且每 输出一帧视频画面之后休眠预设时间段,预设时间段与显示视频帧的帧率成反 比。标志位修订模块25,还用于每输出一帧视频画面后,修改存储视频画面的 存储单元的标志位为空闲。
在某些实施例中,例如本实施例中,若倒序开始视频帧是关键帧,输出模 块26用于输出关键帧解码后的视频画面。
在某些实施例中,例如本实施例中,创建第一线程和第二线程。其中第一 线程,用于实现接收模块22、解码模块23和存储模块24的功能、以及标志 位修订模块25的部分功能。第二线程,用于实现输出模块26的功能,以及标 志位修订模块25的部分功能。本实施例由于服务器1是从第1关键帧开始逐 帧发送第1关键帧与倒开始视频帧之间的视频帧,因此,本实施例的客户端2 的第一线程从第1关键帧开始接收第1关键帧与倒开始视频帧之间的视频帧, 且可以利用该第1关键帧对第1关键帧与倒开始视频帧之间的视频帧进行解码, 并将解码后的视频画面存储至存储空间数组a中。当客户端2的第一线程接收 到第2关键帧时,第二线程按照解码时间输出存储空间数组a中存储的视频画 面,本实施例通过采用多线程技术,提升了客户端的处理效率。
接收模块22,用于从第n+1关键帧开始逐帧接收第n+1关键帧与第n关键 帧之间的每一个视频帧。
解码模块23,用于每接收完成一个视频帧,利用第n+1关键帧解码视频帧 以得到视频画面且记录视频帧的解码时间。
存储模块24,用于每解码完成一个视频帧,存储与视频帧对应的视频画面 至标志位为空闲的存储单元中且视频画面存储完成后,修改存储视频画面的存 储单元的标志位为未显示。
标志位修订模块25,用于接收到第n+2关键帧时,修改已存储至存储空间 数组a中,且标志位为未显示的所有存储单元的标志位为待显示。
输出模块26,用于标志位为未显示的所有存储单元的标志位由未显示修改 为待显示时,对标志位为待显示的所有存储单元中的视频画面按照解码时间的 先后进行排序,并从解码时间最晚的视频画面开始输出且每输出一帧视频画面 之后休眠预设时间段,预设时间段与显示视频帧的帧率成反比。
标志位修订模块25,还用于每输出一帧视频画面,修改存储视频画面的存 储单元的标志位为空闲。
n++,重复执行接收模块22、解码模块23、存储模块24、标志位修订模块 25和输出模块26,直至接收模块22收到倒序结束视频帧。
图2展示了本发明服务器处理倒序播放请求的一种实施例。在本实施例中, 服务器处理倒序播放请求包括如下步骤:
步骤S1,接收客户端发送的倒序播放请求,倒序播放请求包括起始位置信 息和结束位置信息,起始位置信息对应倒序开始视频帧,结束位置信息对应倒 序结束视频帧,倒序开始视频帧与倒序结束视频帧之间包括多个关键帧。
步骤S2,判断倒序开始视频帧是否为关键帧。若倒序开始视频帧非关键帧, 执行步骤S3。若倒序开始视频帧是关键帧,执行步骤S9。
步骤S3,定位与倒序开始视频帧距离最近且位于倒序开始视频帧与倒序结 束视频帧之间的第n关键帧,其中,n=1。
步骤S4,用于从第n关键帧开始逐帧发送第n关键帧与倒序开始视频帧之 间的所有视频帧至客户端。
步骤S5,若第n关键帧与倒序开始视频之间的视频帧发送完成后,定位与 第n关键帧距离最近且位于倒序结束视频帧与第n关键帧之间的第n+1关键帧。
步骤S6,若第n+1关键帧定位成功,从第n+1关键帧开始逐帧发送第n+1 关键帧与第n关键帧之间的所有视频帧至客户端,且发送每一个视频帧之间休 眠预设时间段,预设时间段与显示视频帧的帧率成反比。
步骤S7,第n+1关键帧与第n关键帧之间的所有视频帧发送完成后,n++, 定位与第n关键帧距离最近且位于倒序结束视频帧与第n关键帧之间的第n+1 关键帧。
步骤S8,判断是否发送倒序结束视频帧至客户端。若未发送倒序结束视频 帧至客户端,执行步骤S6。若发送倒序结束视频帧至客户端,执行结束。
步骤S9,发送倒序开始视频帧至客户端。执行步骤S3。
图3展示了本发明客户端倒序播放视频帧的一种实施例。在本实施例中, 客户端倒序播放视频帧包括如下步骤:
步骤S20,判断接收到的第一个视频帧是否为倒序开始视频帧。若第一个 视频帧非倒序开始视频帧,执行步骤S21。若第一个视频帧是倒序开始视频帧, 执行步骤S35。
步骤S21,创建包括多个存储单元的存储空间数组a且设置每一个存储单 元的标志位为空闲,所述存储单元的个数为GopSize*2。
步骤S22,从第n关键帧开始逐帧接收第n关键帧与倒序开始视频帧之间 的每一个视频帧,其中n=1。
步骤S23,每接收完成一个视频帧,利用第n关键帧解码视频帧以得到视 频画面且记录视频帧的解码时间。
步骤S24,每解码完成一个视频帧,存储与视频帧对应的视频画面至标志 位为空闲的存储单元中且视频画面存储完成后,修改存储视频画面的存储单元 的标志位为未显示。
步骤S25,接收到第n+1关键帧时,修改已存储至存储空间数组a中,且 标志位为未显示的所有存储单元的标志位为待显示。
步骤S26,标志位为未显示的所有存储单元的标志位由未显示修改为待显 示时,对标志位为待显示的所有存储单元中的视频画面按照解码时间的先后进 行排序,并从解码时间最晚的视频画面开始输出且每输出一帧视频画面之后休 眠预设时间段,预设时间段与显示视频帧的帧率成反比。
步骤S27,每输出一帧视频画面后,修改存储视频画面的存储单元的标志 位为空闲。
步骤S28,标识位为待显示的视频画面输出完成后,判断是否输出与倒序 结束视频帧对应的视频画面。若输出了与倒序结束视频帧对应的视频画面,执 行结束。若未输出与倒序结束视频帧对应的视频画面,执行步骤S29。
步骤S29,从第n+1关键帧开始逐帧接收第n+1关键帧与第n关键帧之间 的每一个视频帧。
步骤S30,每接收完成一个视频帧,利用第n+1关键帧解码视频帧以得到 视频画面且记录视频帧的解码时间。
步骤S31,每解码完成一个视频帧,存储与视频帧对应的视频画面至标志 位为空闲的存储单元中且视频画面存储完成后,修改存储视频画面的存储单元 的标志位为未显示。
步骤S32,接收到第n+2关键帧时,修改已存储至存储空间数组a中,且 标志位为未显示的所有存储单元的标志位为待显示。
步骤S33,标志位为未显示的所有存储单元的标志位由未显示修改为待显 示时,对标志位为待显示的所有存储单元中的视频画面按照解码时间的先后进 行排序,并从解码时间最晚的视频画面开始输出且每输出一帧视频画面之后休 眠预设时间段,预设时间段与显示视频帧的帧率成反比。
步骤S34,每输出一个视频画面后,修改存储视频画面的存储单元的标志 位为空闲,且待显示的所有视频画面输出完成之后,n++,执行步骤S28。
步骤S35,输出关键帧解码后的视频画面,执行步骤S21。
以上对发明的具体实施方式进行了详细说明,但其只作为范例,本发明并 不限制与以上描述的具体实施方式。对于本领域的技术人员而言,任何对该发 明进行的等同修改或替代也都在本发明的范畴之中,因此,在不脱离本发明的 精神和原则范围下所作的均等变换和修改、改进等,都应涵盖在本发明的范围 内。
机译: 服务器中实时图像流处理方法及符合RTP / RTSP标准的客户端
机译: 使用rtp / rtsp标准协议在服务器和客户端之间进行媒体流处理的方法和装置
机译: 基于客户端的显示状况的从服务器到客户端的多媒体数据传输控制方法,基于客户端的显示状况的从客户端到多媒体数据自适应解码的方法和模块,基于服务器的多媒体数据从客户端到客户端的传输到客户端的控制方法和客户端服务器系统