CN107454432A - 数据发送方法及装置 - Google Patents
数据发送方法及装置 Download PDFInfo
- Publication number
- CN107454432A CN107454432A CN201710615879.4A CN201710615879A CN107454432A CN 107454432 A CN107454432 A CN 107454432A CN 201710615879 A CN201710615879 A CN 201710615879A CN 107454432 A CN107454432 A CN 107454432A
- Authority
- CN
- China
- Prior art keywords
- packet
- send
- caching
- transmitted
- sending
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/643—Communication protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/2187—Live feed
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23106—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
Abstract
本发明公开了一种数据发送方法及装置,所述方法包括:对帧数据进行数据包封装;判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。本发明在满足视频数据传输的实时性要求的基础上,保证封装帧数据的每个数据包的成功发送,优化了因发送端丢包引起的花屏问题。
Description
技术领域
本发明涉及移动通信技术,尤指一种数据发送方法及装置。
背景技术
随着虚拟现实技术的不断成熟,全景内容正在逐渐普及,人们可以通过全景相机拍摄全景视频、全景照片等全景内容。全景相机作为一种嵌入式设备采集到视频数据、照片数据等,经过编码、封装得到数据流,数据流经网络传输,到达手机、头显设备等播放设备进行解封装、解码和显示。
为了保证视频流的实时性传输,一般采用用户数据报协议(User DatagramProtocol,UDP)进行传输。在视频流数据经UDP传输时,花屏问题是在接收端解码、显示时,经常遇到的一个问题。
花屏问题一般由如下原因引起:
嵌入式设备发送数据不连续,发送时产生了丢包,下一次进行发送时,不再发送之前发送的数据包,而是发送之后的数据包,以致接收端播放时出现花屏。
发明内容
为了解决上述技术问题,本发明提供了一种数据发送方法及装置,能够在保证视频的实时性要求的基础上,避免接收端发生播放花屏的问题。
为了达到本发明目的,本发明提供了一种数据发送方法,包括:
对帧数据进行数据包封装;
判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
本申请还提供了一种数据发送装置,包括:
封装单元,用于对帧数据进行数据包封装;
判断单元,用于判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包;
发送单元,用于对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
本申请还提供了另一种数据发送装置,包括:
处理器;以及,
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
对帧数据进行数据包封装;
判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
与现有技术相比,本发明包括对帧数据进行数据包封装;判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。本发明在满足视频数据传输的实时性要求的基础上,保证封装帧数据的每个数据包的成功发送,优化了因发送端丢包引起的花屏问题。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明一实施例提供的数据发送方法的流程图;
图2为本发明一应用示例提供的数据发送方法的流程图;
图3为本发明应用示例的数据发送方法中的将数据包写入发送缓存进行发送的流程图;
图4位本发明另一实施例提供的数据发送装置的架构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
现有技术中,嵌入式设备采集的视频、照片等数据在编码、封装后,会传输到手机等播放设备上进行播放。在实际的数据发送中,由于嵌入式设备发送数据不连续,发送时产生了丢包,而下一次进行发送时,又不再发送之前的数据包,而是发送之后的数据包,这就导致了接收端无法完整的接收到全部数据包,以致播放时出现花屏的问题。
本申请中为了避免接收端播放视频时出现花屏,在对帧数据进行数据包封装后,对于当前编码序列的数据包,在一个数据包发送成功后,再发送下一个数据包,逐一完成每个数据包的发送。同时,由于视频数据存在实时性的要求,如果始终停留在当前编码序列的数据包的发送,将会导致视频的卡顿。为了满足视频的实时性要求,本申请在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,开始发送下一个编码序列的数据包。也就是说,在下一个编码序列到来前,按照数据包的先后顺序,成功发送当前数据包后,再发送下一个数据包。在下一个编码序列的数据包到来时,如果当前编码序列的数据包仍然没有发送完毕,则清空当前编码序列的数据包的发送,开始发送下一个编码序列的数据包,从而满足视频数据的实时性要求。也就是说,在下一个编码序列的数据包到来时,无论当前编码序列的数据包是否发送完成,都启动下一个编码序列的数据包的发送。
以下结合附图详细说明本申请各实施例提供的技术方案。
如图1所示,本申请的数据发送方法,包括:
步骤101:对帧数据进行数据包封装;
步骤102:判断数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
本申请提供的数据发送方法可以应用于嵌入式设备向其他设备发送数据,优选的,可以是全景相机向手机、头显设备等发送视频、照片等数据,但不限于此。
嵌入式设备在采集到视频、照片等内容后,在对数据进行发送前,需要先对数据进行封装、打包。例如,对于视频、照片的帧数据可以采用RTP协议进行数据包封装。由于RTP数据包往往不足以包含一帧数据的全部字节。因此,一般需要对帧数据进行分片传输。这里,可以默认采用FU-A分片,将帧数据打包成多个数据包。
其次,在对帧数据进行数据包封装后,开始进行帧数据的发送。先要判断数据包是当前编码序列的数据包还是下一个编码序列首帧的数据包。
在编码流程中,为了控制错误的传播范围,将编码划分为任意多个编码序列。在一个新的编码序列开始后,参考帧列表被清空,不同编码序列之间不能引用图像做运动参考。本实施例以编码序列为基础,对于当前编码序列的数据包,逐一成功发送每个数据包,从而保证接收端能够完整的接收到当前编码序列的每个数据包,避免花屏问题的发生。同时,由于视频的实时性要求,为了降低数据发送的延时、避免视频发生卡顿,在下一个编码序列首帧的数据包到来时,则清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包,从而满足视频内容的实时性要求。
在编码流程中,从即时解码刷新(Instantaneous Decoding Refresh,IDR)帧开始,重新开始算一个编码序列。
进一步,上述判断数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,包括:
判断数据包是否为封装IDR帧的数据包,如果不是,则确定数据包为当前编码序列的数据包;如果是,则确定数据包为下一个编码序列首帧的数据包。
实际中,在采用RTP协议时,每个RTP数据包的头部,都会有FuIndicator和FuHeader两个字节。假设IDRStartFlag变量表示一个IDR帧的起始标志。使用如下表达式,可以判断一个数据包是不是IDR帧的起始数据包:
IDRStartFlag=((FuIndicator&0x80)&&((FuHeader&0x1f)==5))
如果IDRStartFlag为1,则此数据包是封装IDR帧的数据包;如果IDRStartFlag为0,则此数据包不是封装IDR帧的数据包。
进一步,上述对于当前编码序列的数据包,逐一成功发送每个数据包,包括:
判断发送缓存是否为空,如果为空,则立即对数据包进行发送,若发送成功,则数据包发送结束;若发送失败,则将数据包写入发送缓存中进行发送;如果发送缓存不为空,则将数据包写入发送缓存中进行发送。
在判断出数据包不是封装IDR帧的数据包时,也就是确定数据包为当前编码序列的数据包。为了确保接收端能够完整的接收到当前编码序列的全部数据包,对于当前编码序列的数据包,按照数据包的先后顺序成功发送一个数据包后再发送下一个数据包。
在实际中,在确定数据包不是封装IDR帧的数据包后,先判断发送缓存是否为空,如果为空,则直接立即发送数据包,在发送成功的情况下,结束该数据包的发送;在发送失败的情况下,将该数据包写入发送缓存中,通过发送缓存进行发送;如果判断发送缓存不为空,则将该数据包写入发送缓存中,通过发送缓存对数据包进行发送。上述将数据包写入发送缓存进行发送的具体步骤将在下文进行详细说明。
进一步,上述在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包,包括:
判断发送缓存是否为空,如果为空,则立即对数据包进行发送,若发送成功,则数据包发送结束;若发送失败,则将数据包写入发送缓存中进行发送;如果发送缓存不为空,则将发送缓存清空,并立即对数据包进行发送,若发送成功,则数据包发送结束;若发送失败,则将数据包写入发送缓存中进行发送。
在判断出数据包是封装IDR帧的数据包时,也就是确定数据包为下一个编码序列首帧的数据包,表示下一个编码序列已经到来。为了保证视频数据的实时性要求,在下一个编码序列到来时,清空当前编码序列数据包的发送,开始发送下一个编码序列的数据包。相同的,为了使接收端能够完整的接收到下一个编码序列的全部数据包,对于下一个编码序列的数据包,也是按照数据包的先后顺序成功发送一个数据包后再发送下一个数据包。此时,前述的下一个编码序列变为当前的编码序列。
在实际中,在确定数据包是封装IDR帧的数据包后,先判断发送缓存是否为空,如果为空,则直接立即发送数据包,在发送成功的情况下,结束该数据包的发送;在发送失败的情况下,将该数据包写入发送缓存中,通过发送缓存进行发送;如果判断发送缓存不为空,则清空发送缓存中的数据包,并直接立即发送数据包,在发送成功的情况下,结束该数据包的发送;在发送失败的情况下,将该数据包写入发送缓存中,通过发送缓存进行发送。
进一步,上述将数据包写入发送缓存中进行发送,包括:
将数据包拷贝到发送缓存中;
如果发送线程处于停止状态,则启动发送线程,判断发送缓存中是否有数据包,如果有,则对发送缓存中的首个数据包进行发送,若发送成功,则删除发送成功的数据包,并重复执行判断发送缓存中是否有数据包的步骤;若发送失败,则重复执行判断发送缓存中是否有数据包的步骤。
本实施例中,如果直接发送数据包失败或者是在数据包为当前编码序列的数据包且发送缓存不为空时,将数据包写入发送缓存,通过发送缓存进行发送。
在通过发送缓存发送数据包时,先判断发送数据包的发送线程是否已启动,如果发送线程处于停止状态,则启动发送线程;如果发送线程已处于启动状态,则无需重复启动。
在启动发送线程后,发送线程会判断发送缓存中有没有数据包,如果没有数据包,则停止发送线程;如果有数据包,则对发送缓存中的首个数据包进行发送,在发送成功的情况下,从发送缓存中删除已成功发送的数据包,并再次执行上述判断发送缓存中有没有数据包的步骤,从而进行发送缓存中的下一个数据包的发送;在发送失败的情况下,也重复执行上述判断发送缓存中有没有数据包的操作,从而重复发送已发送失败的数据包,直到数据包发送成功,以使接收端能够完整的接收到当前编码序列的每个数据包。
下面以一个应用示例再对本申请的数据发送方法进行说明。
假设经过网络传输的数据是视频数据,且视频数据采用RTP协议进行传输。开辟一个用来存放数据的缓冲buffer(发送缓存),缓冲buffer的大小可以根据视频的码率确定,如对于码率为2Mbps的视频,缓冲buffer设置为256KB则可满足一个编码序列的数据包的缓存需要。假设这个Buffer为B。将发送数据包的UDP Socket设置为非阻塞。
对于一帧数据,尤其是IDR帧,一个RTP数据包往往不足以包含一帧数据的全部字节。因此,一般将一帧数据分为几片分别进行传输。这里,默认采用FU-A分片,将帧数据打包成多个数据包。
如图2所示,数据发送的流程,包括:
步骤201:FU-A分片结束后,开始发送数据包;
步骤202:判断当前帧是不是IDR帧,如果是,则执行步骤203;否则,执行步骤206;
在每个数据包的头部,会有FuIndicator和FuHeader两个字节。假设IDRStartFlag变量表示一个IDR帧的起始标志。使用如下表达式,判断一个数据包是不是IDR帧的起始数据包:
IDRStartFlag=((FuIndicator&0x80)&&((FuHeader&0x1f)==5))
如果IDRStartFlag为1,则此数据包是IDR帧的起始数据包;如果IDRStartFlag为0,则此数据包为不是IDR帧的数据包。
步骤203:如果IDRStartFlag为1,则判断缓冲buffer B内是否有数据。如果缓冲buffer B内有数据,则执行步骤204;如果缓存区B内没有数据,则执行步骤205;
步骤204:将缓冲buffer B内的数据清空,之后执行步骤205;
步骤205:发送此数据包;
(1)如果发送成功,则一帧的数据发送过程结束。
(2)如果发送失败(返回EAGAIN),则执行步骤207将此数据包拷贝到缓冲buffer B内。
步骤206:如果IDRStartFlag为0,则判断缓冲buffer B是否有数据。如果缓冲buffer B内没有数据,则执行步骤205;如果缓冲buffer B内有数据,则执行步骤207;
步骤207:将此数据包拷贝到缓冲区B内;
步骤208:在数据包被拷贝到缓冲区B内后,将会判断发送线程是否处于启动状态:
(1)如果发送线程处于启动状态,则不再进行启动。
(2)如果发送线程处于停止状态,则启动此线程。
如图3所示,发送缓存中的数据包的发送流程,包括:
步骤301:启动发送线程后,判断缓冲buffer B内是否有数据包,如果缓冲bufferB内没有数据包,则执行步骤302;如果缓冲buffer B内有数据包,则执行步骤303;
步骤302:停止此发送线程,结束;
步骤303:对缓冲buffer B内的首个数据包进行发送;
步骤304:在发送缓冲区内首个数据包后,发送接口返回:
(1)如果发送成功,则执行步骤305;
(2)如果发送失败(返回值为EAGAIN),则不做任何处理,执行步骤301。
步骤305:将首个数据包从缓冲区内删除,跳转到步骤301。
如图4所示,本申请还提供了一种数据发送装置,包括:
封装单元,用于对帧数据进行数据包封装;
判断单元,用于判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包;
发送单元,用于对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
进一步,所述判断单元判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,包括:
判断所述数据包是否为封装即时解码刷新IDR帧的数据包,如果不是,则确定所述数据包为当前编码序列的数据包;如果是,则确定所述数据包为下一个编码序列首帧的数据包。
进一步,所述发送单元对于当前编码序列的数据包,逐一成功发送每个数据包,包括:
判断发送缓存是否为空,如果为空,则立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送;如果所述发送缓存不为空,则将所述数据包写入所述发送缓存中进行发送。
进一步,所述发送单元在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包,包括:
判断发送缓存是否为空,如果为空,则立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送;如果所述发送缓存不为空,则将所述发送缓存清空,并立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送。
进一步,所述发送单元将所述数据包写入所述发送缓存中进行发送,包括:
将所述数据包拷贝到所述发送缓存中;
如果发送线程处于停止状态,则启动所述发送线程,判断发送缓存中是否有数据包,如果有,则对所述发送缓存中的首个数据包进行发送,若发送成功,则删除发送成功的数据包,并重复执行所述判断发送缓存中是否有数据包的步骤;若发送失败,则重复执行所述判断发送缓存中是否有数据包的步骤。
本申请还提供了一种数据发送装置,包括:
处理器;以及,
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
对帧数据进行数据包封装;
判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (11)
1.一种数据发送方法,其特征在于,包括:
对帧数据进行数据包封装;
判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
2.根据权利要求1所述的方法,其特征在于,所述判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,包括:
判断所述数据包是否为封装即时解码刷新IDR帧的数据包,如果不是,则确定所述数据包为当前编码序列的数据包;如果是,则确定所述数据包为下一个编码序列首帧的数据包。
3.根据权利要求1所述的方法,其特征在于,所述对于当前编码序列的数据包,逐一成功发送每个数据包,包括:
判断发送缓存是否为空,如果为空,则立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送;如果所述发送缓存不为空,则将所述数据包写入所述发送缓存中进行发送。
4.根据权利要求1所述的方法,其特征在于,所述在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包,包括:
判断发送缓存是否为空,如果为空,则立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送;如果所述发送缓存不为空,则将所述发送缓存清空,并立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送。
5.根据权利要求3或4所述的方法,其特征在于,所述将所述数据包写入所述发送缓存中进行发送,包括:
将所述数据包拷贝到所述发送缓存中;
如果发送线程处于停止状态,则启动所述发送线程,判断发送缓存中是否有数据包,如果有,则对所述发送缓存中的首个数据包进行发送,若发送成功,则删除发送成功的数据包,并重复执行所述判断发送缓存中是否有数据包的步骤;若发送失败,则重复执行所述判断发送缓存中是否有数据包的步骤。
6.一种数据发送装置,其特征在于,包括:
封装单元,用于对帧数据进行数据包封装;
判断单元,用于判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包;
发送单元,用于对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
7.根据权利要求6所述的装置,其特征在于,所述判断单元判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,包括:
判断所述数据包是否为封装即时解码刷新IDR帧的数据包,如果不是,则确定所述数据包为当前编码序列的数据包;如果是,则确定所述数据包为下一个编码序列首帧的数据包。
8.根据权利要求6所述的装置,其特征在于,所述发送单元对于当前编码序列的数据包,逐一成功发送每个数据包,包括:
判断发送缓存是否为空,如果为空,则立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送;如果所述发送缓存不为空,则将所述数据包写入所述发送缓存中进行发送。
9.根据权利要求6所述的装置,其特征在于,所述发送单元在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包,包括:
判断发送缓存是否为空,如果为空,则立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送;如果所述发送缓存不为空,则将所述发送缓存清空,并立即对所述数据包进行发送,若发送成功,则所述数据包发送结束;若发送失败,则将所述数据包写入所述发送缓存中进行发送。
10.根据权利要求8或9所述的装置,其特征在于,所述发送单元将所述数据包写入所述发送缓存中进行发送,包括:
将所述数据包拷贝到所述发送缓存中;
如果发送线程处于停止状态,则启动所述发送线程,判断发送缓存中是否有数据包,如果有,则对所述发送缓存中的首个数据包进行发送,若发送成功,则删除发送成功的数据包,并重复执行所述判断发送缓存中是否有数据包的步骤;若发送失败,则重复执行所述判断发送缓存中是否有数据包的步骤。
11.一种数据发送装置,其特征在于,包括:
处理器;以及,
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
对帧数据进行数据包封装;
判断所述数据包为当前编码序列的数据包还是下一个编码序列首帧的数据包,对于当前编码序列的数据包,逐一成功发送每个数据包;在下一个编码序列首帧的数据包到来时,清空当前编码序列的数据包的发送,逐一成功发送下一个编码序列的数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710615879.4A CN107454432B (zh) | 2017-07-26 | 2017-07-26 | 数据发送方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710615879.4A CN107454432B (zh) | 2017-07-26 | 2017-07-26 | 数据发送方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107454432A true CN107454432A (zh) | 2017-12-08 |
CN107454432B CN107454432B (zh) | 2021-04-20 |
Family
ID=60487590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710615879.4A Active CN107454432B (zh) | 2017-07-26 | 2017-07-26 | 数据发送方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107454432B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09200745A (ja) * | 1996-01-16 | 1997-07-31 | Matsushita Electric Ind Co Ltd | フレーム間圧縮符号化された情報の伝送方法およびそれを実現するための装置 |
CN1842054A (zh) * | 2005-03-31 | 2006-10-04 | 华为技术有限公司 | 模拟数据包传输乱序的方法及装置 |
CN101656747A (zh) * | 2009-09-25 | 2010-02-24 | 深圳创维数字技术股份有限公司 | 流媒体数据的传输方法及系统 |
CN102325275A (zh) * | 2011-10-17 | 2012-01-18 | 深圳市融创天下科技股份有限公司 | 一种流媒体播放的丢包方法、装置及服务器 |
JP2013126244A (ja) * | 2011-12-16 | 2013-06-24 | Hitachi Ltd | パケット通信装置および方法 |
CN104270594A (zh) * | 2014-09-24 | 2015-01-07 | 大唐移动通信设备有限公司 | 数据包发送与接收的方法及设备 |
CN104618195A (zh) * | 2015-02-16 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 带宽估测方法和装置 |
CN104639451A (zh) * | 2013-11-14 | 2015-05-20 | 中兴通讯股份有限公司 | 数据流分流方法及控制器 |
CN104869461A (zh) * | 2015-05-22 | 2015-08-26 | 南京创维信息技术研究院有限公司 | 视频数据处理系统及方法 |
CN105611424A (zh) * | 2015-12-28 | 2016-05-25 | 武汉鸿瑞达信息技术有限公司 | 基于rudp的音视频可靠传输qos方法、系统 |
-
2017
- 2017-07-26 CN CN201710615879.4A patent/CN107454432B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09200745A (ja) * | 1996-01-16 | 1997-07-31 | Matsushita Electric Ind Co Ltd | フレーム間圧縮符号化された情報の伝送方法およびそれを実現するための装置 |
CN1842054A (zh) * | 2005-03-31 | 2006-10-04 | 华为技术有限公司 | 模拟数据包传输乱序的方法及装置 |
CN101656747A (zh) * | 2009-09-25 | 2010-02-24 | 深圳创维数字技术股份有限公司 | 流媒体数据的传输方法及系统 |
CN102325275A (zh) * | 2011-10-17 | 2012-01-18 | 深圳市融创天下科技股份有限公司 | 一种流媒体播放的丢包方法、装置及服务器 |
JP2013126244A (ja) * | 2011-12-16 | 2013-06-24 | Hitachi Ltd | パケット通信装置および方法 |
CN104639451A (zh) * | 2013-11-14 | 2015-05-20 | 中兴通讯股份有限公司 | 数据流分流方法及控制器 |
CN104270594A (zh) * | 2014-09-24 | 2015-01-07 | 大唐移动通信设备有限公司 | 数据包发送与接收的方法及设备 |
CN104618195A (zh) * | 2015-02-16 | 2015-05-13 | 腾讯科技(深圳)有限公司 | 带宽估测方法和装置 |
CN104869461A (zh) * | 2015-05-22 | 2015-08-26 | 南京创维信息技术研究院有限公司 | 视频数据处理系统及方法 |
CN105611424A (zh) * | 2015-12-28 | 2016-05-25 | 武汉鸿瑞达信息技术有限公司 | 基于rudp的音视频可靠传输qos方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107454432B (zh) | 2021-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108200447A (zh) | 直播数据传输方法、装置、电子设备、服务器及存储介质 | |
US8649427B2 (en) | Image processor, image generator and computer program | |
US10476928B2 (en) | Network video playback method and apparatus | |
CN104869461A (zh) | 视频数据处理系统及方法 | |
CN101188477A (zh) | 一种数据包序列接收的方法及设备 | |
CN108476508A (zh) | 下行数据包配置方法及装置 | |
CN107613409A (zh) | 多媒体数据的处理方法及装置 | |
CN111669645B (zh) | 视频的播放方法、装置、电子设备及存储介质 | |
CN109327557A (zh) | 一种虚拟机ip地址的管理方法及装置 | |
CN110062274A (zh) | 一种视频文件缓存方法、装置、设备及可读存储介质 | |
CN109816757A (zh) | 播放帧动画的方法及装置、计算机设备、计算机存储介质 | |
CN110139123A (zh) | 流媒体文件的播放、发送、处理方法和装置 | |
CN107430496A (zh) | 针对远程显示丢弃帧 | |
CN106210032A (zh) | 基于终端数据批量上报的方法及装置 | |
CN110024395A (zh) | 图像数据处理、传输的方法以及控制终端 | |
CN110191342A (zh) | 视频编码方法及设备、视频解码方法及设备 | |
CN111600680B (zh) | 时分多址tdma突发数据的发送方法、装置和电子设备 | |
CN109977117A (zh) | 状态数据的存储方法、数据发送的方法及装置 | |
CN107454432A (zh) | 数据发送方法及装置 | |
CN109726144B (zh) | 一种数据报文的处理方法和装置 | |
CN113473215B (zh) | 录屏方法、装置、终端及存储介质 | |
TW201140325A (en) | Memory access apparatus and method thereof | |
CN110636368B (zh) | 媒体播放方法、系统、装置及存储介质 | |
CN105763578B (zh) | 一种图片处理方法及装置 | |
CN107592361A (zh) | 一种基于双ib网络的数据传输方法、装置、设备 |
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 |