一种数据流转码的方法及设备与流程

文档序号:12498461阅读:635来源:国知局
一种数据流转码的方法及设备与流程

本申请涉及计算机领域,尤其涉及一种数据流转码的方法及设备。



背景技术:

将日常事物连接到互联网技术迅速发展,智慧园区的建设越来越多的满足用户设备的需求。而智慧园区的建设对于视频监控有天然的需求,是智慧园区系统的基础功能,这就需要提供此功能的基础构架是高效的、稳定的及广泛适用的。目前,视频的监控是通过将实时流传输协议(RTSP)的数据流在视频界面进行显示,给用户展示所监控的对象,而RTSP不是基于超文本传输协议(HTTP)的,对浏览器不是非常友好。另一方面,目前的采用FFServer流媒体服务所提供的访问认证策略是基于IP地址的,这使得上层应用程序对于多媒体流数据的使用是受限于其所部署的服务器的IP地址,这对于智慧园区场景下的流媒体服务是不可容忍的。

申请内容

本申请的一个目的是提供一种数据流转码的方法及设备,解决将RTSP流转码为对浏览器更友好的HLS(流媒体网路传输协议)流的问题。

根据本申请的一个方面,提供了一种数据流转码的方法,所述方法包括:

基于获取用户设备的访问请求生成标记化的访问认证;

通过ffmpeg将所述访问请求对应的实时流传输协议的视频数据流转码为预设视频格式的数据流,将所述预设视频格式的数据流转码为流媒体网络传输协议的待显示数据流;

基于所述标记化的访问认证将所述待显示数据流发送至所述用户设备。

进一步地,所述基于获取用户设备的访问请求生成标记化的访问认证包括:

获取用户设备的访问请求时的当前时间的时间戳;

将所述访问请求对应的访问密钥及所述当前时间的时间戳进行哈希处理,得到哈希序列;

将所述哈希序列与所述当前时间的时间戳拼接后的字符序列进行数据编码,并对所述数据编码后的字符序列进行标记,生成标记化的访问认证。

进一步地,通过ffmpeg将获取到的实时流传输协议的视频数据流转码为预设视频格式的数据流之前,还包括:

根据所述用户设备请求的身份标识从数据库中获取所述访问请求对应的实时流传输协议的地址信息,其中,所述转码推流包括将所述实时流传输协议的视频数据流转码为预设视频格式的数据流。

进一步地,所述方法还包括:

将所述转码推流的日志和所述转码推流所在进程的识别号记录至对应的系统日志文件夹中。

进一步地,所述预设视频格式的数据流包括实时消息传输协议的数据流。

进一步地,基于所述标记化的访问认证将所述待显示数据流发送至所述用户设备,包括:

通过所述标记化的访问认证访问所述流媒体网络传输协议的索引文件,其中,所述索引文件包括所述待显示数据流;

将所述待显示数据流发送至所述用户设备。

进一步地,所述方法还包括:

根据预设的时间阈值判断最近一次检测时间段内,是否存在至少一次对所述流媒体网络传输协议的索引文件的访问,

若不存在,则查询所述转码推流所在进程的识别号,根据所述识别号结束所述转码推流所在的进程,并删除所述识别号所在的系统日志文件夹。

根据本申请的另一方面,还提供了一种数据流转码的设备,所述设备包括:

生成装置,用于基于获取用户设备的访问请求生成标记化的访问认证;

转码装置,用于通过ffmpeg将所述访问请求对应的实时流传输协议的视频数据流转码为预设视频格式的数据流,将所述预设视频格式的数据流转码为流媒体网络传输协议的待显示数据流;

发送装置,用于基于所述标记化的访问认证将所述待显示数据流发送至所述用户设备。

进一步地,所述生成装置用于:

获取用户设备的访问请求时的当前时间的时间戳;

将所述访问请求对应的访问密钥及所述当前时间的时间戳进行哈希处理,得到哈希序列;

将所述哈希序列与所述当前时间的时间戳拼接后的字符序列进行数据编码,并对所述数据编码后的字符序列进行标记,生成标记化的访问认证。

进一步地,所述设备还包括:

地址获取装置,用于根据所述用户设备请求的身份标识从数据库中获取所述访问请求对应的实时流传输协议的地址信息,其中,所述转码推流包括将所述实时流传输协议的视频数据流转码为预设视频格式的数据流。

进一步地,所述设备还包括:

记录装置,用于将所述转码推流的日志和所述转码推流所在进程的识别号记录至对应的系统日志文件夹中。

进一步地,所述预设视频格式的数据流包括实时消息传输协议的数据流。

进一步地,所述发送装置用于:

通过所述标记化的访问认证访问所述流媒体网络传输协议的索引文件,其中,所述索引文件包括所述待显示数据流;

将所述待显示数据流发送至所述用户设备。

进一步地,所述设备还包括:

超时清理装置,用于根据预设的时间阈值判断最近一次检测时间段内,是否存在至少一次对所述流媒体网络传输协议的索引文件的访问,

若不存在,则查询所述转码推流所在进程的识别号,根据所述识别号结束所述转码推流所在的进程,并删除所述识别号所在的系统日志文件夹。

与现有技术相比,本申请通过基于获取用户设备的访问请求生成标记化的访问认证;通过ffmpeg将获取到的实时流传输协议的视频数据流转码为预设视频格式的数据流,将所述预设视频格式的数据流转码为流媒体网络传输协议的待显示数据流;接着,基于所述标记化的访问认证将所述待显示数据流发送至所述用户设备,从而通过将实时流传输协议的视频数据流转换为对浏览器更友好的流媒体网络传输协议的待显示数据流,以便于实现基于浏览器的视频监控系统,并提供了相应的标记化的访问认证策略,使得上层应用程序可以在任意位置访问流媒体服务。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种数据流转码的方法流程示意图;

图2示出本申请的一实施例的一种数据流转码的架构图;

图3示出根据本申请另一个方面的一种数据流转码的设备的结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

图1示出根据本申请一个方面的一种数据流转码的方法流程示意图,所述方法包括:步骤S11~步骤S13,

在步骤S11中,基于获取用户设备的访问请求生成标记化的访问认证;在此,从用户设备中获取用户设备的访问请求,根据访问请求采集到当前时间的时间戳、访问密钥等相关参数,对所采集到的一些相关参数进行处理并编码,生成标记化的访问认证,以访问索引文件找到需要访问的数据流。其中,标记化的访问认证是从输入字符流中生成标记的过程,生成的标记记作token。在本申请一实施例中,获取用户设备对房间编号为A的视频监控的访问请求,则将开始访问时的当前时间的时间戳或可容忍的稍微有点延迟的时间戳和房间A的访问密钥等相关参数进行处理并编码,生成token,使得用户设备上的上层应用程序在任意位置访问流媒体服务,即不受限于其所部署的服务器的IP地址。

在步骤S12中,通过ffmpeg将所述访问请求对应的实时流传输协议的视频数据流转码为预设视频格式的数据流,将所述预设视频格式的数据流转码为流媒体网络传输协议的待显示数据流;在一实施例中,获取到访问请求从对应的实时流传输协议(RTSP)流获取到视频流,将视频流进行转码,将其转换为智慧园区系统要求的预设的视频格式。优选地,所述预设视频格式的数据流包括实时消息传输协议的数据流,智慧园区系统中开源流媒体模块要求的视频格式为实时消息传输协议的数据流(RTMP),则首先将RTSP流转码为RTMP流;可以理解,HLS是基于HTTP的流媒体网路传输协议,浏览器使用HTTP与服务器端通信,而RTSP在体系结构上位于实时传输协议(RTP)和实时传输控制协议(RTCP)之上,使用TCP(传输控制协议)和UDP(传输层协议)完成数据传输,因此需要将转码后的RTMP流进一步地转码为对浏览器更友好的HLS流。需要说明的是,所述ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转换为流的开源计算机程序。

在步骤S13中,基于所述标记化的访问认证将所述待显示数据流发送至所述用户设备。在此,根据生成的token进行访问HLS流的索引文件,将索引文件下的HLS待显示数据流发送至用户设备,在用户设备的视频界面上进行显示。

优选地,在步骤S11中,获取用户设备的访问请求时的当前时间的时间戳;将所述访问请求对应的访问密钥及所述当前时间的时间戳进行哈希处理,得到哈希序列;将所述哈希序列与所述当前时间的时间戳拼接后的字符序列进行数据编码,并对所述数据编码后的字符序列进行标记,生成标记化的访问认证。在本申请一实施例中,采用了token认证方式,根据用户设备的访问请求获得当前时间的时间戳,访问密钥(ACCESSKEY)等参数进行哈希处理,再与当前时间的时间戳拼接后进行数据编码,得到token。需要说明的是,上述时间戳(timestamp)为一个字符序列,唯一标识某一时刻的时间;分配一个唯一的访问密钥(ACCESSKEY)来访问系统提供的一些应用程序接口;数据编码优选为用于传输8字节代码的base64编码。

优选地,步骤S12之前,所述方法还包括:步骤S12’,根据所述用户设备请求的身份标识从数据库中获取所述访问请求对应的实时流传输协议的地址信息,其中,所述转码推流包括将所述实时流传输协议的视频数据流转码为预设视频格式的数据流。在此,启动一个进程进行转码推流的服务,从数据库(Redis)中获取访问请求对应的RTSP流的地址信息,以便根据地址信息从RTSP流中获得视频数据流。

优选,所述方法还包括:步骤S12”,将所述转码推流的日志和所述转码推流所在进程的识别号记录至对应的logs(系统日志)文件夹中。接上述实施例,在转码推流过程中,将转码推流的日志和转码推流所在的进程的pid信息记录在相对应的logs文件夹下,为超时清理功能提供可能,其中,pid为进程识别号。

优选地,在步骤S13中,通过所述标记化的访问认证访问所述流媒体网络传输协议的索引文件,其中,所述索引文件包括所述待显示数据流;将所述待显示数据流发送至所述用户设备。在此,通过生成的token可以访问HLS的索引文件,从索引文件中获得要播放的监控视频;具体地,索引文件为HLSm3u8索引文件,其中,m3u8是指一种可变长度字符编码UTF-8编码格式的播放多媒体列表的m3u文件。

优选地,所述方法还包括:步骤S14,根据预设的时间阈值判断最近一次检测时间段内,是否存在至少一次对所述流媒体网络传输协议的索引文件的访问,若不存在,则查询所述转码推流所在进程的识别号,根据所述识别号结束所述转码推流所在的进程,并删除所述识别号所在的logs文件夹。在此,由于应用软件在停止流媒体播放时可能忘记调用相应的停止推流应用程序接口(API),导致系统可能存在大量未被使用的转码进程,从而导致网络带宽和磁盘IO的巨大浪费,因此需要一个合理的超时清理机制,在本申请一实施例中,在启动转码推流时,开启一个计时器,在延迟一定时间后(设定一个时间阈值)检测对应数据流的m3u8索引文件是否在最近的一段时间内被访问,比如在延迟10s后检测对应数据流的m3u8索引文件是否在最近的3s内被访问过,若未被访问,将会找到数据流对应的转码推流所在的进程的pid,根据pid停止相应的进程,停止记录pid的文件也会被删除,从而节省网络带宽和磁盘IO的资源。

图2示出本申请一实施例中数据流转码的架构图,所述架构图基于OpenResty,复用了petrel中的模块,其中,OpenResty是基于高性能的HTTP服务器Nginx与轻量脚本语言Lua的高性能网页(web)平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项;petrel是一种基于OpenResty的应用开发框架,使得模块可以被任意的拆分和组合;nginx-rtmp-module是一种Nginx的开源流媒体模块;bash为一种命令执行界面(unix shell);使用本实施例中的架构,利用Lua在系统的后端启动独立的进程将RTSP流通过ffmpeg转换为RTMP流,推送到以OpenResty和nginx-rtmp-module为基础构建的流媒体统一接入系统,然后由其提供HLS流服务,完成转码推流的过程,并提供了token的访问认证,使得上层应用程序可以在任意位置访问流媒体服务;进一步地,提供相应的超时清理机制,节省了网络带宽和磁盘IO的资源。

图3示出根据本申请另一个方面的一种数据流转码的设备的结构示意图,所述设备包括:生成装置11、转码装置12和发送装置13,其中,所述生成装置11,用于基于获取用户设备的访问请求生成标记化的访问认证;所述转码装置12,用于通过ffmpeg将所述访问请求对应的实时流传输协议的视频数据流转码为预设视频格式的数据流,将所述预设视频格式的数据流转码为流媒体网络传输协议的待显示数据流;所述发送装置13,用于基于所述标记化的访问认证将所述待显示数据流发送至所述用户设备。

具体地,生成装置11,用于基于获取用户设备的访问请求生成标记化的访问认证;在此,从用户设备中获取用户设备的访问请求,根据访问请求采集到当前时间的时间戳、访问密钥等相关参数,对所采集到的一些相关参数进行处理并编码,生成标记化的访问认证,以访问索引文件找到需要访问的数据流。其中,标记化的访问认证是从输入字符流中生成标记的过程,生成的标记记作token。在本申请一实施例中,获取用户设备对房间编号为A的视频监控的访问请求,则将开始访问时的当前时间的时间戳或可容忍的稍微有点延迟的时间戳和房间A的访问密钥等相关参数进行处理并编码,生成token,使得用户设备上的上层应用程序在任意位置访问流媒体服务,即不受限于其所部署的服务器的IP地址。

具体地,转码装置12,用于通过ffmpeg将所述访问请求对应的实时流传输协议的视频数据流转码为预设视频格式的数据流,将所述预设视频格式的数据流转码为流媒体网络传输协议的待显示数据流;在一实施例中,获取到访问请求从对应的实时流传输协议(RTSP)流获取到视频流,将视频流进行转码,将其转换为智慧园区系统要求的预设的视频格式。优选地,所述预设视频格式的数据流包括实时消息传输协议的数据流,智慧园区系统中开源流媒体模块要求的视频格式为实时消息传输协议的数据流(RTMP),则首先将RTSP流转码为RTMP流;可以理解,HLS是基于HTTP的流媒体网路传输协议,浏览器使用HTTP与服务器端通信,而RTSP在体系结构上位于实时传输协议(RTP)和实时传输控制协议(RTCP)之上,使用TCP(传输控制协议)和UDP(传输层协议)完成数据传输,因此需要将转码后的RTMP流进一步地转码为对浏览器更友好的HLS流。需要说明的是,所述ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转换为流的开源计算机程序。

具体地,发送装置13,用于基于所述标记化的访问认证将所述待显示数据流发送至所述用户设备。在此,根据生成的token进行访问HLS流的索引文件,将索引文件下的HLS待显示数据流发送至用户设备,在用户设备的视频界面上进行显示。

优选地,生成装置11,用于获取用户设备的访问请求时的当前时间的时间戳;将所述访问请求对应的访问密钥及所述当前时间的时间戳进行哈希处理,得到哈希序列;将所述哈希序列与所述当前时间的时间戳拼接后的字符序列进行数据编码,并对所述数据编码后的字符序列进行标记,生成标记化的访问认证。在本申请一实施例中,采用了token认证方式,根据用户设备的访问请求获得当前时间的时间戳,访问密钥(ACCESSKEY)等参数进行哈希处理,再与当前时间的时间戳拼接后进行数据编码,得到token。需要说明的是,上述时间戳(timestamp)为一个字符序列,唯一标识某一时刻的时间;分配一个唯一的访问密钥(ACCESSKEY)来访问系统提供的一些应用程序接口;数据编码优选为用于传输8字节代码的base64编码。

优选地,所述设备还包括:地址获取装置12’,用于根据所述用户设备请求的身份标识从数据库中获取所述访问请求对应的实时流传输协议的地址信息,其中,所述转码推流包括将所述实时流传输协议的视频数据流转码为预设视频格式的数据流。在此,启动一个进程进行转码推流的服务,从数据库(Redis)中获取访问请求对应的RTSP流的地址信息,以便根据地址信息从RTSP流中获得视频数据流。

优选,所述设备还包括:记录装置12”,用于将所述转码推流的日志和所述转码推流所在进程的识别号记录至对应的logs(系统日志)文件夹中。接上述实施例,在转码推流过程中,将转码推流的日志和转码推流所在的进程的pid信息记录在相对应的logs文件夹下,为超时清理功能提供可能,其中,pid为进程识别号。

优选地,发送装置13,用于通过所述标记化的访问认证访问所述流媒体网络传输协议的索引文件,其中,所述索引文件包括所述待显示数据流;将所述待显示数据流发送至所述用户设备。在此,通过生成的token可以访问HLS的索引文件,从索引文件中获得要播放的监控视频;具体地,索引文件为HLS m3u8索引文件,其中,m3u8是指一种可变长度字符编码UTF-8编码格式的播放多媒体列表的m3u文件。

优选地,所述设备还包括:超时清理装置14,用于根据预设的时间阈值判断最近一次检测时间段内,是否存在至少一次对所述流媒体网络传输协议的索引文件的访问,若不存在,则查询所述转码推流所在进程的识别号,根据所述识别号结束所述转码推流所在的进程,并删除所述识别号所在的logs文件夹。在此,由于应用软件在停止流媒体播放时可能忘记调用相应的停止推流应用程序接口(API),导致系统可能存在大量未被使用的转码进程,从而导致网络带宽和磁盘IO的巨大浪费,因此需要一个合理的超时清理机制,在本申请一实施例中,在启动转码推流时,开启一个计时器,在延迟一定时间后(设定一个时间阈值)检测对应数据流的m3u8索引文件是否在最近的一段时间内被访问,比如在延迟10s后检测对应数据流的m3u8索引文件是否在最近的3s内被访问过,若未被访问,将会找到数据流对应的转码推流所在的进程的pid,根据pid停止相应的进程,停止记录pid的文件也会被删除,从而节省网络带宽和磁盘IO的资源。

图2示出本申请一实施例中数据流转码的架构图,所述架构图基于OpenResty,复用了petrel中的模块,其中,OpenResty是基于高性能的HTTP服务器Nginx与轻量脚本语言Lua的高性能网页(web)平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项;petrel是一种基于OpenResty的应用开发框架,使得模块可以被任意的拆分和组合;nginx-rtmp-module是一种Nginx的开源流媒体模块;bash为一种命令执行界面(unix shell);使用本实施例中的架构,利用Lua在系统的后端启动独立的进程将RTSP流通过ffmpeg转换为RTMP流,推送到以OpenResty和nginx-rtmp-module为基础构建的流媒体统一接入系统,然后由其提供HLS流服务,完成转码推流的过程,并提供了token的访问认证,使得上层应用程序可以在任意位置访问流媒体服务;进一步地,提供相应的超时清理机制,节省了网络带宽和磁盘IO的资源。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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