面向安防视频监控的自适应编码流媒体服务的实现方法
- 国知局
- 2024-08-02 13:52:18
本发明属于流媒体服务方法,涉及面向安防视频监控的自适应编码流媒体服务的实现方法。
背景技术:
1、流媒体技术是指将一连串的媒体数据压缩后,以流的方式在网络中传输,实现实时传输影音及实时观赏的一种技术。
2、近些年随着网络直播及短视频平台的兴起,基于http-flv的流媒体服务逐渐成为业界技术方案。基于http-flv的流媒体服务具备如下优点:采用http协议防火墙对其非常友好、传输的成功率更高、长连接传输flv流且传输颗粒度小、可获得更低的播放延迟。rtsp是安防设备里比较通用的协议,英文全称是real time streaming protocol,实时流传输协议,rtsp协议是tcp/ip体系中的应用层协议,支持tcp或者udp传输,可以一对多传输音视频流,支持双向传输,主动或者被动均可,同时对网络延时容忍度很高。
3、由于rtsp协议天然无法在网页环境中播放,各种基于b/s架构的智能视频分析、数字孪生、智慧安防类项目需要借助于专用的rtsp流媒体服务来完成rtsp协议到http-flv协议的转换。当前的流媒体服务在rtsp转换为http-flv直播流时候主要存在如下问题:
4、1.不支持h265自动转码:由于当前网页浏览器对h264兼容性极好,却对h265编码的支持不够完善,如在直播流中使用h265编码将导致较低的兼容性,目前的相关方案中,仍未有流媒体相关项目实现了对rtsp格式视频流编码的自动识别并对h265编码的自动转码为h264编码。
5、2.配置复杂,启动服务前需要逐个把rtsp视频源写入配置文件或数据库。
技术实现思路
1、本发明的目的是提供面向安防视频监控的自适应编码流媒体服务的实现方法,解决了现有技术中存在的不支持对h265视频源自动转码的问题。
2、本发明所采用的技术方案是,面向安防视频监控的自适应编码流媒体服务的实现方法,具体按照如下步骤实施:
3、步骤1,客户端构造流媒体播放url字符串;
4、步骤2,客户端向流媒体服务器发起流媒体播放http请求;
5、步骤3,流媒体服务器从流媒体播放http请求获取流媒体播放url字符串,根据流媒体播放url字符串解析出目标视频源rtsp地址,根据目标视频源rtsp地址判断目标视频源的视频编码,若编码等于h265,则进行转码为h264后将对应的视频写入http响应对象,若不等于h265则直接将对应的视频写入http响应对象;
6、步骤4,客户端从http响应对象中获得对应的数据,显示第一帧直播画面;
7、步骤5,客户端获得第二帧及后续直播画面。
8、本发明的特征还在于:
9、步骤1具体为:
10、步骤1.1,客户端获取流媒体服务器的ip和端口以及要播放的rtsp视频源地址;
11、步骤1.2,客户端调用url转义函数,将步骤1.1获取的rtsp视频源地址转化为已转义的rtsp视频源地址;
12、步骤1.3,客户端根据流媒体服务器的ip和端口以及已转义的rtsp视频源地址构造流媒体播放url字符串。
13、步骤1中的客户端为网页端流媒体播放器。
14、步骤3具体为:
15、步骤3.1,流媒体服务器从流媒体播放http请求中获取流媒体播放url字符串,并根据流媒体播放http请求创建http响应对象;
16、步骤3.2,流媒体服务器调用正则表达式匹配函数,将步骤3.1获取的流媒体播放url字符串传递给所属字符串匹配函数,解析出目标视频源rtsp地址;
17、步骤3.3,根据步骤3.2解析的目标视频源rtsp地址利用ffmpeg音视频编解码库的open函数创建rtsp读模式对象,调用rtsp读模式对象的解复用方法获取第一个视频数据包;
18、步骤3.4,以写模式创建flv文件对象,视频编码置为h264,并将flv文件对象写操作映射到步骤3.1创建的http响应对象的写操作;
19、步骤3.5,创建全局标记rtsp_code、h265_decode、h264_encode,并全部初始化为空;
20、步骤3.6,从步骤3.3创建的rtsp读模式对象中读取第一个视频数据包;
21、步骤3.7,从第一个视频数据包中,读取前6个字节,以此判断目标视频源的视频编码,并写入到全局标记rtsp_code中;
22、步骤3.8,判断全局标记rtsp_code中的视频编码,若rtsp_code中的视频编码等于h265,则执行步骤3.9,若rtsp_code中的视频编码不等于h265,则认为视频编码为h264,则将第一个视频数据包写入到flv文件对象中,然后执行步骤3.13;
23、步骤3.9,利用ffmpeg音视频编解码库创建h265解码器对象并写入到全局标记h265_decode中,利用ffmpeg音视频编解码库创建h264编码器对象并写入到全局标记h265_encode中;
24、步骤3.10,从全局标记h265_decode中获取h265解码器对象,并把将第一个视频数据包解码为第一个视频帧;
25、步骤3.11,从全局标记h264_encode中获取h264编码器对象,把经过步骤3.10获得的解码的第一个视频帧编码为第一个重编码视频数据包;
26、步骤3.12,将步骤3.11获得的第一个重编码视频数据包写入到flv文件对象中;
27、步骤3.13,将flv文件对象中的第一个重编码视频数据包或者第一个视频数据包写入到http响应对象中。
28、步骤4具体为:客户端收到http响应对象中的flv格式的数据,显示第一帧直播画面。
29、步骤5中客户端获得第二帧直播画面具体为:
30、步骤5.1,流媒体服务器从rtsp读模式对象中读取第二个视频数据包;
31、步骤5.2,从第二个视频数据包中,读取前6个字节,以此判断目标视频源的视频编码,并写入到全局标记rtsp_code中;
32、步骤5.3,判断全局标记rtsp_code中的视频编码,若rtsp_code中的视频编码等于h265,则执行步骤5.4,若rtsp_code中的视频编码不等于h265,则认为视频编码为h264,则将第二个视频数据包写入到flv文件对象中,然后执行步骤5.7;
33、步骤5.4,从全局标记h265_decode中获取h265解码器对象,并把将第二个视频数据包解码为第二个视频帧;
34、步骤5.5,从全局标记h264_encode中获取h264编码器对象,把经过步骤5.4获得的解码的第二个视频帧编码为第二个重编码视频数据包;
35、步骤5.6,将步骤5.5获得的第二个重编码视频数据包写入到flv文件对象中;
36、步骤5.7,将flv文件对象中的第二个重编码视频数据包或者第二个视频数据包写入到http响应对象中;
37、步骤5.8,客户端收到http响应对象中的flv格式的数据,显示第二帧直播画面。
38、步骤5中客户端获得第二帧后续的直播画面具体为:按照步骤5.1-5.8的方式,依次显示第三帧直播画面、第四帧直播画面、...,直到最后一帧直播画面。
39、本发明的有益效果是:
40、(1)本发明通过读取rtsp格式视频源的第一个视频数据包判断视频编码并写入全局标记,若全局标记等于h265,则创建h265解码器和h264编码器,然后利用二者对视频数据包解码再编码为h264数据包的操作实现了对rtsp协议h265编码视频源自动转码。
41、(2)本发明通过把rtsp视频源url以参数形式融入到httpflv流媒体服务器播放地址的方式实现了视频源的“零配置”,服务启动后无需后续额外维护rtsp视频源配置。
本文地址:https://www.jishuxx.com/zhuanli/20240801/240887.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。