一种低延时RTSP视频播放器及播放方法与流程

文档序号:37931900发布日期:2024-05-11 00:10阅读:6来源:国知局
一种低延时RTSP视频播放器及播放方法与流程

本技术属于视频播放器,尤其涉及一种低延时rtsp视频播放器及播放方法。


背景技术:

1、媒体播放器类软件所播放的媒体内容包括文件播放和实时流媒体播放两大类,文件播放是指播放器所播放的媒体内容是以媒体文件形式保存在本地或者网络存储空间,如windows自带的媒体播放器播放硬盘上的视频文件,或者浏览器对已保存在服务器上的媒体文件内容进行点播等,这些文件的保存,除了具体的媒体内容信息,还保存了提供给播放器的其他参考信息,比如媒体参考帧的存放位置、解码器参数等,解码器在获取媒体内容时也可以随时读取这些参考信息。

2、实时流媒体文件与文件播放不同。实时流媒体文件不存在文件保存形式,媒体源会不断的产生音视频数据,播放器需要不断消化这些媒体内容,由于缺少上述参考信息,就不能实现播放进度的控制或者调整播放时间,比如实时摄像头、网络直播等,延时就成为了一个影响用户体验的关键指标。

3、同时,由于当前主流的视频压缩标准为国际电信联盟(itu)的h.264格式,其压缩具有方向性,其优点是仅需要在每一个非关键帧解码前参考上一帧率,偶尔需要下一帧解码后的内容做参考,顺序解码的效率非常高。但是在仅解码某一单帧图像的话则必须追溯到上一个关键帧(又称为帧内帧),再依次解码中间剩下的非关键帧(又称为参考帧)才能正确获取图像,此时会占用大量计算资源,一旦关键帧出现解码失败,或者因为解码时间较长在下一帧到来前没能及时处理,就会出现丢帧,用户端直观影响到的就是延时增高,图像质量下降,错误的图像数据可能会传播到后续的帧中,导致整个视频序列的解码质量都受到影响。

4、尽管网络传输流媒体使用广泛,但目前市面上的播放器,在播放rtsp网络视频流时,存在延时较高、占用资源较高、连接稳定性不高、且需要一段时间后重新连接等问题,不论是对于用户还是对于开发者,都容易降低使用体验。


技术实现思路

1、为了解决上述现有技术的不足,本技术提供一种低延时rtsp视频播放器及播放方法,基于ffmpeg内核和qt动态库,实现4路rtsp传输h.264视频流的播放控制,延时较低、资源占用低、连接稳定。

2、为了实现上述目的,本发明采用以下技术:

3、一种低延时rtsp视频播放器,包括ffmpeg解码库、qt动态库和c/c++的标准库;

4、c/c++的标准库用于为ffmpeg解码库和qt动态库提供功能调用支持和逻辑控制支持;

5、ffmpeg解码库用于获取多路rtsp视频流,并进行拆包以提取h.264格式的视频码流,并对h.264视频流解码以还原出yuv图像数据;

6、qt动态库用于将yuv图像数据转换为rgb图像数据,并在界面进行多路同时显示或单独放大显示某一路。

7、进一步,ffmpeg解码库包括工具模块、预处理模块、解码模块;

8、工具模块用于对预处理模块、解码模块及qt动态库进行初始化,注册解码库中所有可用的文件格式和配置解码器,初始化网络流格式为rtsp并确定原始网络数据流的解析协议;

9、预处理模块用于根据得到的rtsp地址与rtsp服务器进行交互认证,并获取rtsp视频流,并按工具模块确定的解析协议对rtsp视频流进行解析,拆包提取h.264格式的视频码流;

10、解码模块用于调用通过工具模块配置的解码器并依据h.264标准所指定的算法和流程,逐帧解码h.264格式的视频码流,识别并还原不同类型的视频帧:对于关键帧,进行直接解码并生成完整的图像数据,对于预测帧,参考之前已解码的帧数据进行解码和重构,以还原出完整的图像数据;每帧数据均解码为yuv图像数据后传递至qt动态库。

11、进一步,预处理模块用于在未解析到正确的h.264格式的视频码流时进行过滤舍弃,并重新进行rtsp视频流的获取。

12、进一步,qt动态库包括处理模块、显示模块、缓存模块;

13、处理模块用于对yuv图像数据进行逻辑判断和功能判断,决定显示方式多路同时显示或单独放大显示某一路,以及判断是否需要进行显示大小调整,并根据判断结果向显示模块反馈信号;并判断是否需要保存当前图片和/或当前视频;并将yuv图像数据转化为rgb图像数据传递给显示模块;若需要保存图片,则将当前时间的rgb图像数据保存在本地;若需要保存视频,则将当前时间之后的预处理模块提取的h.264格式的视频码流保存在本地;

14、显示模块用于根据处理模块的反馈信号作为槽函数分析处理结果,以确定将rgb图像数据在界面进行多路同时显示或单独放大显示某一路,并保持显示大小不变或进行显示大小调整。

15、缓存模块用于根据工具模块的初始化控制预先开辟并分配缓存空间,预处理模块用于将提取的h.264格式的视频码流缓存到缓存空间,解码模块用于检索缓存空间中的h.264格式的视频码流来进行逐帧解码;缓存模块还用于根据缓存的h.264格式的视频码流的宽高判断是否需要重新划分缓存空间,并用于缓存当前帧数据,在网络传输速率小于播放器处理速率时,将离散的间歇性的数据输入转化为连续稳定的数据流,以供解码模块检索,在网络传输速率大于等于播放器处理速率时进行数据存储,按照播放器处理速率逐帧提供给解码模块进行解码。

16、进一步,显示模块用于在界面进行多路同时显示时,在每一路的显示区域重写鼠标双击事件,从而在响应于对指定路的显示区域的鼠标双击时,最大化显示所述指定路的图像数据并同时隐藏其余路的显示,响应于再次鼠标双击,恢复多路同时显示状态。

17、进一步,显示模块在用于进行显示大小调整时,调用qt动态库对界面控制键布局进行锁定以保证窗口的自由缩放。

18、进一步,处理模块在用于对yuv图像数据进行逻辑判断时,若发现不存在关键帧或关键帧解码错误,则进入异常处理步骤,先判断当前预处理模块与rtsp服务器的连接是否稳定,以确定需要断线重连,若连接不稳定,则通知预处理模块进行断线重连;在连接稳定后,通知预处理模块重新rtsp视频流。

19、一种低延时rtsp视频播放方法,采用所述的低延时rtsp视频播放器进行实现。

20、本发明有益效果在于:

21、1、通过ffmpeg解码库和qt动态库并基于c/c++的标准库进行编写,可以广泛应用于windows平台,在pc端具有通用性;科学合理的软件结构提高了视频解码效率;

22、2、根据h.264的编码特性,缓存机制的增加,保证了对关键帧的解码效率,进而影响到了整个解码流程的质量和延时,减少了由于传输速率和处理速率不一致容易引起的数据丢失问题,尤其是关键帧数据丢失问题;由于缓存模块的动态分配策略,可以使资源划分更加合理,在保证更低资源使用的同时平衡更高性能的释放;

23、3、通过预处理模块和处理模块的异常检测处理机制,减少了网络波动等意外的断连,保证了面对网络波动计算机其他软件中断等突发情况时软件运行的稳定性,更稳定地连接保证了用户及开发者的使用体验;

24、4、相较市面上同类产品,延时更低、连接更稳定、占用资源更小,降低了对pc的硬件要求,大大提升了用户体验。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1