CN113746755A - 数据处理方法、装置、设备及计算机可读存储介质 - Google Patents
数据处理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113746755A CN113746755A CN202110878538.2A CN202110878538A CN113746755A CN 113746755 A CN113746755 A CN 113746755A CN 202110878538 A CN202110878538 A CN 202110878538A CN 113746755 A CN113746755 A CN 113746755A
- Authority
- CN
- China
- Prior art keywords
- program
- srt
- data processing
- rtmp
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000004891 communication Methods 0.000 claims abstract description 15
- 238000012546 transfer Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 23
- 238000005192 partition Methods 0.000 claims description 10
- 238000004806 packaging method and process Methods 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 description 22
- 238000000034 method Methods 0.000 description 18
- 230000003993 interaction Effects 0.000 description 6
- 238000013467 fragmentation Methods 0.000 description 5
- 238000006062 fragmentation reaction Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1069—Session establishment or de-establishment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种数据处理方法,包括:获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;获取安全可靠传输协议SRT对应的第三程序;基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序。本发明还公开了一种数据处理装置、设备及计算机可读存储介质。本发明通过将第一程序的握手协议替换为SRT的握手协议,使得第一目标程序可实现SRT的握手协议,在通过第一目标程序建立通信连接时,通过减少基于TCP的多个RTT的时间消以及降低握手流程的时间消耗,从而降低了首次建立连接的时间延迟。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、设备及计算机可读存储介质。
背景技术
RTMP(Real Time Messaging Protocol,实时消息传输协议)通过底层的传输层协议(通常是TCP)来保证信息传输的可靠性。在基于RTMP的链接建立完成后,RTMP需要客户端和服务器通过“握手”来建立基于传输层链接之上的RTMP Connection链接,在Connection链接上会传输一些控制信息,如SetChunkSize,SetACKWindowSize等。然后通过CreateStream命令会创建一个Stream链接,用于传输具体的音视频数据和控制这些信息传输的命令信息。通过RTMP协议传输时会对数据做自己的格式化,这种格式的消息我们称之为RTMP Message,实际传输的时发送端会把Message划分为带有Message ID的Chunk,每个Chunk可能是一个单独的Message,也可能是Message的一部分,在接收端会根据chunk中包含的data的长度,message id和message的长度把chunk还原成完整的Message,从而实现信息的收发。
由于RTMP是基于TCP进行视频传输的协议,TCP存在三次握手,而RTMP自身也存在三次握手,再加上connect、CreateStream以及play/publish的流程,使得通过RTMP建立通信连接需要进行9次会话,导致建立连接的延时较长。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种数据处理方法、装置、设备及计算机可读存储介质,旨在解决通过RTMP建立连接时延时长的技术问题。
为实现上述目的,本发明提供一种数据处理方法,所述数据处理方法包括以下步骤:
获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;
在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;
获取安全可靠传输协议SRT对应的第三程序;
基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序。
进一步地,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤包括:
确定第三程序的握手协议代码对应的握手接口,并基于所述握手接口修改所述第二程序,通过修改后的第二程序调用所述握手接口,获得所述第一目标程序。
进一步地,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤之后,还包括:
获取所述第一程序对应的TCP socket,以及所述第三程序对应的UDP socket;
将所述第一目标程序中的TCP socket替换为对应的UDP socket,获得第二目标程序,并将所述第二目标程序作为所述第一目标程序。
进一步地,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤之后,还包括:
获取所述TCP socket对应的第一函数,以及所述UDP socket对应的第二函数;
将所述第二目标程序中的第一函数替换为对应的第二函数,获得第三目标程序,并将所述第三目标程序作为所述第一目标程序。
进一步地,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤之后,还包括:
基于所述第一目标程序中的握手协议代码,建立与目标客户端之间的通信链接;
获取所述目标客户端对应的RTMP视频数据;
基于预设字节阈值对待发送视频数据进行分包,获得SRT数据包,并将所述SRT数据包发送至所述目标客户端,其中,所述预设字节阈值小于SRT报文的最大字节数。
进一步地,所述基于预设字节阈值对待发送视频数据进行分包,获得SRT数据包的步骤包括:
依次遍历RTMP视频数据中的RTMP信息,获得当前遍历的RTMP信息;
对于当前遍历的RTMP信息,依次遍历RTMP信息的逻辑分块,获得当前遍历的逻辑分块;
基于所述预设字节阈值确定当前遍历的逻辑分块所属的SRT数据包,直至所述RTMP视频数据遍历完成。
进一步地,所述基于所述预设字节阈值确定当前遍历的逻辑分块所属的SRT数据包的步骤包括:
获取当前SRT缓存区内数据的第一字节数、所述逻辑分块的第二字节数以及RTMP头的第三字节数;
计算第一字节长度、第二字节长度以及第三字节长度的总字节;
若所述总字节小于或等于所述预设字节阈值,则将所述逻辑分块以及RTMP头所对应的数据块缓存至所述SRT缓存区;
若所述总字节大于所述预设字节阈值,则基于所述SRT缓存区内的数据生成SRT数据包,清空所述SRT缓存区,并将所述数据块缓存至所述SRT缓存区。
此外,为实现上述目的,本发明还提供一种数据处理装置,所述数据处理装置包括:
第一获取模块,用于获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;
移出模块,用于在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;
第二获取模块,用于获取安全可靠传输协议SRT对应的第三程序;
修改模块,用于基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序。
此外,为实现上述目的,本发明还提供一种数据处理设备,所述数据处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,所述数据处理程序被所述处理器执行时实现前述的数据处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如权利要求1至7中任一项所述的数据处理方法的步骤。
本发明通过获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;接着在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;而后获取安全可靠传输协议SRT对应的第三程序;然后基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序,通过将第一程序的握手协议替换为SRT的握手协议,使得第一目标程序可实现SRT的握手协议,在通过第一目标程序建立通信连接时,通过减少基于TCP的多个RTT的时间消以及降低握手流程的时间消耗,从而降低了首次建立连接的时间延迟。同时,通过第一目标程序复用RTMP的协议控制和数据格式,进而降低了采用该第一目标程序在SRT上传输处理直播流交互控制和数据报文结构的复杂度。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的数据处理设备的结构示意图;
图2为本发明数据处理方法第一实施例的流程示意图;
图3为本发明数据处理装置一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的数据处理设备的结构示意图。
本发明实施例数据处理设备可以是PC,也可以是智能手机、平板电脑、电子书阅读器、MP3(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)播放器、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、便携计算机等具有显示功能的可移动式终端设备。
如图1所示,该数据处理设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,数据处理设备还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。当然,数据处理设备还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对数据处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据处理程序。
在图1所示的数据处理设备中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的数据处理程序。
在本实施例中,数据处理设备包括:存储器1005、处理器1001及存储在所述存储器1005上并可在所述处理器1001上运行的数据处理程序,其中,处理器1001调用存储器1005中存储的数据处理程序时,并执行以下各个实施例中数据处理方法的步骤。
本发明还提供一种数据处理方法,参照图2,图2为本发明数据处理方法第一实施例的流程示意图。
本实施例中,该数据处理方法包括以下步骤:
步骤S101,获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;
步骤S202,在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;
步骤S103,获取安全可靠传输协议SRT对应的第三程序;
步骤S104,基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序。
需要说明的是,通过RTMP传输视频数据时,所有控制命令报文和音视频数据报文都采用统一的数据传输格式;例如创建连接/创建流/控制命令/RPC调用/纯音视频数据流等等都源于相同的Chunk报文结构,只是报文中的Message Header的message type id不同。虽然RTMP的各种控制和数据传输类型较多,但是都基于标准的Chunk和Message报文结构,该报文数据内容本身实际上无论在TCP或UDP上都可以传输,只要RTMP实现程序的发送和接收端收到上述报文,使用已有代码处理逻辑就可直接解析并进行交互,不需要做额外的私有协议处理和封装,进而可以将RTMP报文从TCP移植到基于UDP的SRT(SecureReliable Transport,安全可靠传输协议)上进行传输。
RTMP的媒体握手包括C0C1C2/S0S1S2的三次交互,它不属于Chunk/Message结构,RTMP实现程序除了对标准Chunk和Message的解析处理,还需要对这三次握手进行额外处理,而且耗费更多的往返往返RTT。而SRT的握手逻辑以Caller-Listener模式为例,一方是呼叫方(Caller),另一方是监听方(Listener)。SRT在第一次握手往返时先交换一下cookie;第二个往返就会交换细节参数,如版本、加密方式、双向延时量、StreamID等。开始传输之后,数据包首部就带有时间戳,另外还会交换很多控制数据,例如ACK、NCK、ACKACK(针对肯定应答的肯定应答)、Keepalive,Shutdown。
本实施例中,先获取RTMP对应的第一程序,该第一程序为RTMP的实现程序,通过该第一程序可实现基于RTMP的视频数据传输。并确定第一程序的握手协议代码,即第一程序中实现RTMP的三次握手处理逻辑的程序代码。
在获取到,第一程序以及握手协议代码之后,在第一程序中移除所述第一程序的握手协议代码,得到第二程序,即删除第一程序中的握手协议代码,将删除后的第一程序作为第二程序,进而降低握手流程的冗余度和复杂度。
而后,获取SRT对应的第三程序,该第三程序为SRT的实现程序,并确定第三程序中的握手协议,并基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序,以将第三程序的握手协议代码引入第二程序,进而把SRT的握手逻辑引入到第二程序中作为替代。具体地,可通过第二程序去调用SRT的握手API,进而实现不需要再次封装重新实现SRT的握手流程。
进一步地,在一实施例中,该步骤S104包括:
确定第三程序的握手协议代码对应的握手接口,并基于所述握手接口修改所述第二程序,通过修改后的第二程序调用所述握手接口,获得所述第一目标程序。
本实施例中,在获取到第三程序之后,先确定第三程序的握手协议代码,根据该握手协议代码确定对应的握手接口(握手API),而后修改第二程序,以通过修改后的第二程序调用所述握手接口,获得所述第一目标程序,进而可以通过第一目标程序调用SRT的握手API,以实现实现SRT的握手流程。
本实施例提出的数据处理方法,通过获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;接着在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;而后获取安全可靠传输协议SRT对应的第三程序;然后基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序,通过将第一程序的握手协议替换为SRT的握手协议,使得第一目标程序可实现SRT的握手协议,在通过第一目标程序建立通信连接时,通过减少基于TCP的多个RTT的时间消以及降低握手流程的时间消耗,从而降低了首次建立连接的时间延迟。同时,通过第一目标程序复用RTMP的协议控制和数据格式,进而降低了采用该第一目标程序在SRT上传输处理直播流交互控制和数据报文结构的复杂度。
基于第一实施例,提出本发明数据处理方法的第二实施例,在本实施例中,步骤S104之后,该数据处理方法还包括:
步骤S201,获取所述第一程序对应的TCP socket,以及所述第三程序对应的UDPsocket;
步骤S202,将所述第一目标程序中的TCP socket替换为对应的UDP socket,获得第二目标程序,并将所述第二目标程序作为所述第一目标程序。
需要说明的是,Socket的作用是能够在网络上发送send和接收recv数据。RTMP采用的socket基于TCP,SRT的socket基于UDP。二者建立连接创建socket的方式不同,底层的收发机制也不同。因此,需要将第一目标程序中的RTMP_Connect()使用的TCP socket替换为调用SRT的srt_connect()所使用的UDP socket,使得建立在socket之上RTMP chunk数据包在使用send和recv时可以透传而不必做更多与socket相关的适配性代码改动。
在本实施例中,在获得第一目标程序时,获取所述第一程序对应的TCP socket,以及所述第三程序对应的UDP socket,并将第一目标程序中的TCP socket替换为对应的UDPsocket,获得第二目标程序,并将所述第二目标程序作为所述第一目标程序,通过进行socket的替换,避免对第一目标程序中socket相关的代码进行适应性改动,提高第一目标程序的适用性。
进一步地,在一实施例中,步骤S202之后,该数据处理方法还包括:
步骤S203,获取所述TCP socket对应的第一函数,以及所述UDP socket对应的第二函数;
步骤S204,将所述第二目标程序中的第一函数替换为对应的第二函数,获得第三目标程序,并将所述第三目标程序作为所述第一目标程序。
本实施例中,为进一步减少对第一目标程序中socket相关的代码的适应性改动,在第一目标程序中获取TCP socket对应的第一函数,以及在第三程序中获取UDP socket对应的第二函数,其中,第一函数为与TCP socket连接相关的function,第二函数为与UDPsocket连接相关的function。
而后,将所述第二目标程序中的第一函数替换为对应的第二函数,获得第三目标程序,并将所述第三目标程序作为所述第一目标程序,通过直接替换对应的function,进一步避免对第一目标程序中socket相关的代码进行适应性改动。
本实施例提出的数据处理方法,通过获取所述第一程序对应的TCP socket,以及所述第三程序对应的UDP socket;接着将所述第一目标程序中的TCP socket替换为对应的UDP socket,获得第二目标程序,并将所述第二目标程序作为所述第一目标程序,能够避免对第一目标程序中socket相关的代码进行适应性改动,提高第一目标程序的适用性。
基于上述各个实施例,提出本发明数据处理方法的第三实施例,在本实施例中,步骤S104之后,还包括:
步骤S301,基于所述第一目标程序中的握手协议代码,建立与目标客户端之间的通信链接;
步骤S302,获取所述目标客户端对应的RTMP视频数据;
步骤S303,基于预设字节阈值对待发送视频数据进行分包,获得SRT数据包,并将所述SRT数据包发送至所述目标客户端,其中,所述预设字节阈值小于SRT报文的最大字节数。
需要说明的是,由于RTMP基于TCP传输,TCP协议层的实现已经包含了对MTU(最大传输单元)的支持,MTU是链路层中的网络对数据帧的一个限制,以以太网为例,MTU为1500个字节。一个IP数据报在以太网中传输,如果它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。而基于UDP的数据报,UDP层的数据报不会进行分段,因此当长度超过了MTU时,会在网络层进行IP分片;由于IP层本身没有超时重传机制,必须交由上层的传输层甚至应用层来处理,但UDP协议和之上的SRT协议并没有做相应的处理,在将RTMP的数据包在UDP和SRT之上传输时,需要对RTMP数据进行分包。
本实施例中,在接收到连接请求时,运行该第一目标程序,通过该第一目标程序中的握手协议代码,建立与目标客户端之间的通信链接。
在通信连接建立完成之后,获取目标客户端对应的RTMP视频数据,并基于预设字节阈值对待发送视频数据进行分包,获得SRT数据包,并将SRT数据包发送至所述目标客户端,其中,所述预设字节阈值小于SRT报文的最大字节数,通过对数据进行分包以避免数据传输过程中的IP分片,降低了在SRT上传输处理直播流交互控制和数据报文结构的复杂度。
现有的SRT的Header共16个字节;加上IP和UDP Header的28字节,一共为固定的44字节,为了避免IP分片,要确保每个SRT报文的实际传输内容少于1500–44=1456个字节,即SRT报文的最大字节数为1456个字节。
本实施例提出的数据处理方法,通过基于所述第一目标程序中的握手协议代码,建立与目标客户端之间的通信链接;接着获取所述目标客户端对应的RTMP视频数据;而后基于预设字节阈值对待发送视频数据进行分包,获得SRT数据包,并将所述SRT数据包发送至所述目标客户端,其中,所述预设字节阈值小于SRT报文的最大字节数,通过对数据进行分包以避免数据传输过程中的IP分片,降低了在SRT上传输处理直播流交互控制和数据报文结构的复杂度。同时,通过采用UDP进行数据传输,避免在直播音视频流过程中由于TCP的超时重传和拥塞控制等造成的高延迟传输,降低数据传输的延时。
基于第三实施例,提出本发明数据处理方法的第四实施例,在本实施例中,步骤S303包括:
步骤S401,依次遍历RTMP视频数据中的RTMP信息,获得当前遍历的RTMP信息;
步骤S402,对于当前遍历的RTMP信息,依次遍历RTMP信息的逻辑分块,获得当前遍历的逻辑分块;
步骤S403,基于所述预设字节阈值确定当前遍历的逻辑分块所属的SRT数据包,直至所述RTMP视频数据遍历完成。
本实施例中,在获取到RTMP视频数据时,依次遍历RTMP视频数据中的RTMP信息,获得当前遍历的RTMP信息即RTMP message,对于当前遍历的RTMP message,依次遍历RTMP信息的逻辑分块chunk,获得当前遍历的chunk。
接着,基于所述预设字节阈值确定当前遍历的逻辑分块所属的SRT数据包,直至所述RTMP视频数据遍历完成,具体地,该步骤S403包括:
步骤a,获取当前SRT缓存区内数据的第一字节数、所述逻辑分块的第二字节数以及RTMP头的第三字节数;
步骤b,计算第一字节长度、第二字节长度以及第三字节长度的总字节;
步骤c,若所述总字节小于或等于所述预设字节阈值,则将所述逻辑分块以及RTMP头所对应的数据块缓存至所述SRT缓存区;
步骤d,若所述总字节大于所述预设字节阈值,则基于所述SRT缓存区内的数据生成SRT数据包,清空所述SRT缓存区,并将所述数据块缓存至所述SRT缓存区。
本实施例中,每一次获得当前遍历的chunk时,先获取当前SRT缓存区内数据的第一字节数、当前遍历的chunk的第二字节数以及RTMP头的第三字节数,并计算第一字节长度、第二字节长度以及第三字节长度的总字节即第一字节长度、第二字节长度以及第三字节长度之和。
而后,判断该总字节是否小于或等于所述预设字节阈值,其中,该预设字节阈值小于SRT报文的最大字节数,并且,由于chunk的最大字节数为128,RTMP herder(RTMP头)的最大字节数为44,为使SRT缓存区留有一定冗余空间,可以根据chunk以及RTMP herder设置预设字节数,该预设字节数大于172(128+44),例如,预设字节数可以为200,而预设字节阈值小于SRT报文的最大字节数-预设字节数,即预设字节阈值小于1256(1456-200)。
若所述总字节小于或等于所述预设字节阈值,则将所述逻辑分块以及RTMP头所对应的数据块缓存至所述SRT缓存区,并继续遍历RTMP信息的逻辑分块。若所述总字节大于所述预设字节阈值,则基于所述SRT缓存区内的数据生成SRT数据包,清空所述SRT缓存区,并将所述数据块缓存至所述SRT缓存区,并继续遍历RTMP信息的逻辑分块。
其中,在当前遍历的RTMP信息遍历完成时,继续执行依次遍历RTMP视频数据中的RTMP信息的步骤。
本实施例提出的数据处理方法,通过依次遍历RTMP视频数据中的RTMP信息,获得当前遍历的RTMP信息,接着对于当前遍历的RTMP信息,依次遍历RTMP信息的逻辑分块,获得当前遍历的逻辑分块,而后基于所述预设字节阈值确定当前遍历的逻辑分块所属的SRT数据包,直至所述RTMP视频数据遍历完成,能够通过预设字节阈值对RTMP信息进行分包以避免数据传输过程中的IP分片,进一步降低了在SRT上传输处理直播流交互控制和数据报文结构的复杂度。
本发明还提供一种数据处理装置,参照图3,所述数据处理装置包括:
第一获取模块10,用于获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;
移出模块20,用于在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;
第二获取模块30,用于获取安全可靠传输协议SRT对应的第三程序;
修改模块40,用于基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序。
上述各程序单元所执行的方法可参照本发明数据处理方法各个实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如上所述的数据处理方法的步骤。
其中,在所述处理器上运行的数据处理程序被执行时所实现的方法可参照本发明数据处理方法各个实施例,此处不再赘述。
此外,本发明实施例还提出一种计算机程序产品,该计算机程序产品上包括数据处理程序,所述数据处理程序被处理器执行时实现如上所述的数据处理方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据处理方法,其特征在于,所述数据处理方法包括以下步骤:
获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;
在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;
获取安全可靠传输协议SRT对应的第三程序;
基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序。
2.如权利要求1所述的数据处理方法,其特征在于,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤包括:
确定第三程序的握手协议代码对应的握手接口,并基于所述握手接口修改所述第二程序,通过修改后的第二程序调用所述握手接口,获得所述第一目标程序。
3.如权利要求1所述的数据处理方法,其特征在于,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤之后,还包括:
获取所述第一程序对应的TCP socket,以及所述第三程序对应的UDP socket;
将所述第一目标程序中的TCP socket替换为对应的UDP socket,获得第二目标程序,并将所述第二目标程序作为所述第一目标程序。
4.如权利要求3所述的数据处理方法,其特征在于,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤之后,还包括:
获取所述TCP socket对应的第一函数,以及所述UDP socket对应的第二函数;
将所述第二目标程序中的第一函数替换为对应的第二函数,获得第三目标程序,并将所述第三目标程序作为所述第一目标程序。
5.如权利要求1至4任一项所述的数据处理方法,其特征在于,所述基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序的步骤之后,还包括:
基于所述第一目标程序中的握手协议代码,建立与目标客户端之间的通信链接;
获取所述目标客户端对应的RTMP视频数据;
基于预设字节阈值对待发送视频数据进行分包,获得SRT数据包,并将所述SRT数据包发送至所述目标客户端,其中,所述预设字节阈值小于SRT报文的最大字节数。
6.如权利要求5所述的数据处理方法,其特征在于,所述基于预设字节阈值对待发送视频数据进行分包,获得SRT数据包的步骤包括:
依次遍历RTMP视频数据中的RTMP信息,获得当前遍历的RTMP信息;
对于当前遍历的RTMP信息,依次遍历RTMP信息的逻辑分块,获得当前遍历的逻辑分块;
基于所述预设字节阈值确定当前遍历的逻辑分块所属的SRT数据包,直至所述RTMP视频数据遍历完成。
7.如权利要求6所述的数据处理方法,其特征在于,所述基于所述预设字节阈值确定当前遍历的逻辑分块所属的SRT数据包的步骤包括:
获取当前SRT缓存区内数据的第一字节数、所述逻辑分块的第二字节数以及RTMP头的第三字节数;
计算第一字节长度、第二字节长度以及第三字节长度的总字节;
若所述总字节小于或等于所述预设字节阈值,则将所述逻辑分块以及RTMP头所对应的数据块缓存至所述SRT缓存区;
若所述总字节大于所述预设字节阈值,则基于所述SRT缓存区内的数据生成SRT数据包,清空所述SRT缓存区,并将所述数据块缓存至所述SRT缓存区。
8.一种数据处理装置,其特征在于,所述数据处理装置包括:
第一获取模块,用于获取实时消息传输协议RTMP对应的第一程序,并确定所述第一程序的握手协议代码;
移出模块,用于在所述第一程序中移除所述第一程序的握手协议代码,得到第二程序;
第二获取模块,用于获取安全可靠传输协议SRT对应的第三程序;
修改模块,用于基于所述第三程序的握手协议代码,修改所述第二程序,获得第一目标程序。
9.一种数据处理设备,其特征在于,所述数据处理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据处理程序,所述数据处理程序被所述处理器执行时实现如权利要求1至7中任一项所述的数据处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如权利要求1至7中任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110878538.2A CN113746755B (zh) | 2021-07-30 | 2021-07-30 | 数据处理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110878538.2A CN113746755B (zh) | 2021-07-30 | 2021-07-30 | 数据处理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113746755A true CN113746755A (zh) | 2021-12-03 |
CN113746755B CN113746755B (zh) | 2023-10-20 |
Family
ID=78729753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110878538.2A Active CN113746755B (zh) | 2021-07-30 | 2021-07-30 | 数据处理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113746755B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5490252A (en) * | 1992-09-30 | 1996-02-06 | Bay Networks Group, Inc. | System having central processor for transmitting generic packets to another processor to be altered and transmitting altered packets back to central processor for routing |
US8595477B1 (en) * | 2011-03-24 | 2013-11-26 | Google Inc. | Systems and methods for reducing handshake delay in streaming protocol web requests |
US20140245453A1 (en) * | 2013-02-28 | 2014-08-28 | Motorola Solutions, Inc. | Method and apparatus for transmitting a user datagram protocol message that is larger than a defined size |
CN107592554A (zh) * | 2017-09-20 | 2018-01-16 | 武汉斗鱼网络科技有限公司 | 直播视频转发方法及装置 |
WO2018121742A1 (zh) * | 2016-12-30 | 2018-07-05 | 北京奇虎科技有限公司 | 一种流数据的传输方法和装置 |
CN110958466A (zh) * | 2019-12-17 | 2020-04-03 | 杭州当虹科技股份有限公司 | 一种基于rtmp传输的sdi信号同步回传方法 |
CN111628976A (zh) * | 2020-05-15 | 2020-09-04 | 绿盟科技集团股份有限公司 | 一种报文处理方法、装置、设备及介质 |
CN112039824A (zh) * | 2019-06-03 | 2020-12-04 | 上海哔哩哔哩科技有限公司 | 通信方法、系统、设备及计算机可读存储介质 |
CN112422241A (zh) * | 2020-11-09 | 2021-02-26 | 广州博冠信息科技有限公司 | 数据传输方法、装置、存储介质及计算机设备 |
CN112565210A (zh) * | 2020-11-24 | 2021-03-26 | 创盛视联数码科技(北京)有限公司 | Cdn节点推荐方法、系统、电子设备及存储介质 |
CN113114580A (zh) * | 2021-04-16 | 2021-07-13 | 电子科技大学 | 面向5g网络拥塞控制的用户态传输协议开发框架及方法 |
-
2021
- 2021-07-30 CN CN202110878538.2A patent/CN113746755B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5490252A (en) * | 1992-09-30 | 1996-02-06 | Bay Networks Group, Inc. | System having central processor for transmitting generic packets to another processor to be altered and transmitting altered packets back to central processor for routing |
US8595477B1 (en) * | 2011-03-24 | 2013-11-26 | Google Inc. | Systems and methods for reducing handshake delay in streaming protocol web requests |
US20140245453A1 (en) * | 2013-02-28 | 2014-08-28 | Motorola Solutions, Inc. | Method and apparatus for transmitting a user datagram protocol message that is larger than a defined size |
WO2018121742A1 (zh) * | 2016-12-30 | 2018-07-05 | 北京奇虎科技有限公司 | 一种流数据的传输方法和装置 |
CN107592554A (zh) * | 2017-09-20 | 2018-01-16 | 武汉斗鱼网络科技有限公司 | 直播视频转发方法及装置 |
CN112039824A (zh) * | 2019-06-03 | 2020-12-04 | 上海哔哩哔哩科技有限公司 | 通信方法、系统、设备及计算机可读存储介质 |
CN110958466A (zh) * | 2019-12-17 | 2020-04-03 | 杭州当虹科技股份有限公司 | 一种基于rtmp传输的sdi信号同步回传方法 |
CN111628976A (zh) * | 2020-05-15 | 2020-09-04 | 绿盟科技集团股份有限公司 | 一种报文处理方法、装置、设备及介质 |
CN112422241A (zh) * | 2020-11-09 | 2021-02-26 | 广州博冠信息科技有限公司 | 数据传输方法、装置、存储介质及计算机设备 |
CN112565210A (zh) * | 2020-11-24 | 2021-03-26 | 创盛视联数码科技(北京)有限公司 | Cdn节点推荐方法、系统、电子设备及存储介质 |
CN113114580A (zh) * | 2021-04-16 | 2021-07-13 | 电子科技大学 | 面向5g网络拥塞控制的用户态传输协议开发框架及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113746755B (zh) | 2023-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107277612B (zh) | 用于在web浏览器上播放媒体流的方法和设备 | |
US7664067B2 (en) | Preserving socket connections over a wireless network | |
US9143547B2 (en) | Streaming video over a wireless network | |
US20150271233A1 (en) | Method and apparatus for dash streaming using http streaming | |
CN111246284A (zh) | 视频流播放方法、系统、终端及存储介质 | |
CN107819809B (zh) | 对内容进行同步操作的方法及装置 | |
CN103348657B (zh) | 流媒体播放方法、设备及系统 | |
CN114221909B (zh) | 数据传输方法、装置、终端及存储介质 | |
EP1213926A2 (en) | Data reproduction method, data receiving terminal and data receiving method | |
WO2014008793A1 (zh) | 一种tcp数据传输方法、tcp卸载引擎及系统 | |
US8432966B2 (en) | Communication apparatus and control method for communication apparatus | |
US20060200577A1 (en) | Method for transmitting moving picture data to mobile terminal using pseudo-streaming technology | |
CN101179480B (zh) | 一种转发流媒体的方法 | |
WO2023103318A1 (zh) | 媒体流传输方法和系统 | |
JP5920466B2 (ja) | 通信システムと方法とプログラム | |
KR20160142850A (ko) | Mmt에서 미디어 데이터의 저 지연 소비 시그날링 및 동작 방법 및 장치 | |
WO2011130962A1 (zh) | 远程处理方法、装置及系统 | |
WO2023217188A1 (zh) | 一种直播数据传输方法、装置、系统、设备和介质 | |
CN114710568B (zh) | 音视频数据通信方法、设备及存储介质 | |
CN113746755B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN113329040B (zh) | 媒体流转发过程中的协议转换方法、装置 | |
CN115379252A (zh) | 直播推流方法、装置、设备及存储介质 | |
CN114363676A (zh) | 视频流传输方法、装置、设备及介质 | |
CN112383801A (zh) | 媒体流分发方法、装置、分发服务器及存储介质 | |
CN106210867A (zh) | 一种数据分享的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |