CN112235616B - 一种视频传输方法、装置、设备及介质 - Google Patents
一种视频传输方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN112235616B CN112235616B CN202011110306.4A CN202011110306A CN112235616B CN 112235616 B CN112235616 B CN 112235616B CN 202011110306 A CN202011110306 A CN 202011110306A CN 112235616 B CN112235616 B CN 112235616B
- Authority
- CN
- China
- Prior art keywords
- data packet
- frame
- coding
- encapsulated
- key frame
- 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.)
- Active
Links
- 230000005540 biological transmission Effects 0.000 title claims abstract description 72
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000004590 computer program Methods 0.000 claims description 15
- 230000011218 segmentation Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 12
- 238000005538 encapsulation Methods 0.000 claims description 4
- 238000005192 partition Methods 0.000 claims description 4
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000000903 blocking effect Effects 0.000 abstract description 9
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000007774 longterm Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
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/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/266—Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
- H04N21/2662—Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
- H04N19/146—Data rate or code amount at the encoder output
-
- 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 or manipulating encoded video stream scene graphs
- H04N21/2343—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
- H04N21/234381—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the temporal resolution, e.g. decreasing the frame rate by frame skipping
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本申请公开了一种视频传输方法、装置、设备及介质,该方法包括:获取图像序列,并基于预设的编码码率对所述图像序列进行实时编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及关键帧后的若干个编码帧;基于数据包分割长度实时对获取的关键帧或编码帧进行分割,以得到多个数据包;基于预设的数据包格式向数据包填充数据包头信息,以得到封装后数据包;基于第一预设时间间隔向接收端发送封装后数据包,以便接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。能够在信号干扰大、信号弱等较差的网络环境或限制吞吐量的网络环境下,改善H264和H265视频流传输阻塞、丢帧等情况。
Description
技术领域
本发明涉及视频传输领域,特别涉及一种视频传输方法、装置、设备及介质。
背景技术
H264或H265码流在传输过程中,大致每2~4秒有1个关键帧及若干个编码帧,而关键帧大小达几十KB以上,甚至百KB以上,编码帧数据量较小,通常只有几KB,因此在传输关键帧时,会产生突发的大数据传输,而Wifi网络对突发的大数据传输存在不足,不仅容易达到传输瓶颈,且容易丢包,造成瞬时的阻塞。目前,对码流传输在TCP(即TransmissionControl Protocol,传输控制协议)或UDP(即User Datagram Protocol,用户数据报协议)的基础上,在每发送一个数据包后,等待接收方反馈接收状态,若不成功,则持续重发该包,即在Wifi网络上对每个数据包进行实时检测判断是否发送成功,若超时未得到反馈,则重发该数据包,因此在网络环境不好情况下,容易导致发送的数据包持续重发,导致后续的数据包无法发送,造成视频流延迟、阻塞、丢帧等现象。
发明内容
有鉴于此,本发明的目的在于提供一种方法、装置、设备及介质,能够在Wifi信号干扰大、信号弱等较差的网络环境或限制吞吐量的网络环境下,改善H264和H265视频流传输阻塞、丢帧等情况,其具体方案如下:
第一方面,本申请公开了一种视频传输方法,应用于发送端,包括:
获取图像序列,并基于预设的编码码率对所述图像序列进行编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧;
基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包;
基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包;
基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。
可选的,所述基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包,包括:
将所述数据包缓存至数据包缓存区,并生成数据包发送列表;
基于预设的数据包格式向所述数据包填充数据包头信息,以得到所述封装后数据包;其中,所述数据包头信息包括数据包序号、等待应答包序号、帧组序号、重发次数、帧组内包序号和帧组内包数量。
可选的,所述将所述数据包缓存至数据包缓存区,并生成数据包发送列表的过程中,还包括:
查看所述数据包缓存区的空闲率;
基于所述空闲率调整所述数据包分割长度;
基于所述空闲率确定出对应的期望帧率和期望清晰度,并基于所述期望帧率和所述期望清晰度调整所述编码码率。
可选的,所述基于第一预设时间间隔向接收端发送所述封装后数据包之后,还包括:
修改所述封装后数据包的所述等待应答包序号和所述重发次数;
若所述重发次数达到重发次数阈值,则读取所述封装后数据包的所述帧组序号,并从所述数据包缓存区中剔除含有相同的所述帧组序号的封装后数据包,并更新所述数据包发送列表。
可选的,所述基于预设时间间隔向接收端发送所述封装后数据包之后,还包括:
查看所述数据包缓存区的所述空闲率;
若所述空闲率小于空闲率阈值,则从所述数据包缓存区中剔除所述帧组序号最小的所述封装后数据包,并更新所述数据包发送列表。
可选的,所述视频传输方法,还包括:
获取所述接收端基于第二预设时间间隔发送的数据包接收信息;
基于所述数据包接收信息确定出所述接收端已接收的所述封装后数据包,并将相应的所述封装后数据包从所述数据包缓存区中剔除,并更新所述数据包发送列表。
第二方面,本申请公开了一种视频传输方法,应用于接收端,所述接收端用于获取发送端通过前述方法传输的封装后数据包,包括:
根据所述封装后数据包的数据包头信息重组所述封装后数据包,以得到关键帧和编码帧;
将所述关键帧和所述编码帧按接收顺序解码后实时传输至上层显示应用,以得到视频画面。
可选的,所述视频传输方法,还包括:
将所述封装后数据包存放至本地缓存区,并根据获取的所述封装后数据包更新相应的数据包接收信息,并基于第二预设时间间隔向所述发送端发送所述数据包接收信息;
判断是否存在所述封装后数据包在预设时长后没有重组为所述目标帧组,若存在,则将所述封装后数据包及含有相同帧组序号的封装后数据包从所述本地缓存区中剔除。
第三方面,本申请公开了一种视频传输装置,包括:
目标帧组获取模块,用于获取图像序列,并基于预设的编码码率对所述图像序列进行编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧;
分割模块,用于基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包;
数据包封装模块,用于基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包;
数据包发送模块,用于基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。
第四方面,本申请公开了一种电子设备,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现前述的视频传输方法。
第五方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中计算机程序被处理器执行时实现前述的视频传输方法。
本申请公开的视频传输方法,包括:获取图像序列,并基于预设的编码码率对所述图像序列进行编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧;基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包;基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包;基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。
通过这种方式,通过分割目标帧组内的关键帧以及分割目标帧组内的编码帧,得到多个数据包,并向所述数据包填充数据包头信息以得到封装后数据包,然后基于第一预设时间间隔向接收端发送所述封装后数据包,由于将上述关键帧和编码帧进行分割后再传输,并且在发送所述封装后数据包后不等待接收端的反馈,按照所述第一预设时间间隔发送下一个封装后数据包,由此,能够在信号干扰大、信号弱等较差的网络环境或限制吞吐量的网络环境下,改善H264和H265视频流传输阻塞、丢帧等情况。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请提供的一种视频传输方法流程图;
图2为本申请提供的一种具体的视频传输方法流程图;
图3为本申请提供的具体的视频传输方法流程图;
图4为本申请提供的一种具体的视频传输方法流程图;
图5为本申请提供的一种视频传输装置结构示意图;
图6为本申请提供的一种电子设备结构图。
具体实施方式
现有技术中,通过发送关键帧和编码帧,并在获取到前一帧的接收反馈后发送下一帧,但由于关键帧的数据量较大,并且若超时未得到反馈则重发该帧,由此容易造成视频流延迟、阻塞、丢帧等现象。为克服上述问题,本申请提出一种Wifi网络下视频流的传输方法,适用于基于H264压缩格式的视频流,以及基于H265压缩格式的视频流,能够在Wifi信号干扰大、信号弱等较差的网络环境或限制吞吐量的网络环境下,改善视频流传输阻塞、丢帧等情况。
本申请实施例公开了一种视频传输方法,应用于发送端,参见图1所示,该方法可以包括以下步骤:
步骤S11:获取图像序列,并基于预设的编码码率对所述图像序列进行编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧。
本实施例中,首先获取图像序列,然后基于预设的编码码率利用H264编码器或H265编码器对上述图像序列进行编码得到相应的关键帧或编码帧,可以理解的是,对实时得到的图像进行编码,以得到相应的关键帧或编码帧;并且,在编码第一个关键帧时,可以以低码率进行编码;由于H264压缩格式以及H265压缩格式的特点,编码后得到的目标帧组中包含一个关键帧,即I帧,以及上述关键帧后的若干个编码帧,即P帧。
步骤S12:基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包。
本实施例中,对上述目标帧组中的关键帧进行分割,以及对上述编码帧进行分割,得到多个数据包,可以理解的是,在对图像进行实时编码后得到相应的关键帧或编码帧后,实时对得到的关键帧或编码帧进行分割以得到相应的数据包;可以理解的是,由于上述关键帧的数据量较大,上述编码帧的数据量远小于关键帧的数据量,网络面对突发的大数据传输时,不仅会存在传输瓶颈问题,而且容易出现丢包,造成瞬时堵塞等问题,通过分割处理后得到的数据包在传输时通常不会引起网络的堵塞。
步骤S13:基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包。
本实施例中,在分割后得到上述数据包后,基于预设的数据包格式向上述数据包中添加数据包头信息,以得到包含头信息的封装后数据包,可以理解的是,向分割后的数据包中添加相应的数据包头信息,以便于后续的数据发送以及接收端的接收。
步骤S14:基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。
本实施例中,得到上述封装后数据包后,基于第一预设时间间隔向接收端发送上述封装后数据包,以便接收端基于封装后数据包中的数据包头信息重组上述关键帧和上述编码帧,并解码传输至上层应用,即显示屏,以得到视频画面;可以理解的是,相比于现有技术中在接收到上一个数据包的响应后在发送下一个数据包,本实施例中基于第一预设时间间隔直接向接收端依次发送上述封装后数据包,由此可以提高视频数据的传输效率,改善基于H264压缩格式或H265压缩格式的视频流传输阻塞、丢帧等情况。具体的,本实施例中上述第一预设时间间隔可以在5ms到10ms之间,也可以根据实际运行过程中对视频实时性的要求进行调整,例如,若对图像延迟显示的容忍度大于500ms时,上述第一预设时间可以大于或等于20ms;若对图像延迟显示的容忍度大于300ms时,上述第一预设时间可以为15ms左右;若对图像延迟显示的容忍度小于200ms时,上述第一预设时间可以为10ms左右;可以理解的是,本实施例不对上述第一预设时间进行具体限制,可以根据实际情况进行调整。
由上可见,本实施例通过获取图像序列,并基于预设的编码码率对所述图像序列进行编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧;基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包;基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包;基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。
通过这种方式,分割目标帧组内的关键帧以及分割目标帧组内的编码帧,得到多个数据包,并向所述数据包填充数据包头信息以得到封装后数据包,然后基于第一预设时间间隔向接收端发送所述封装后数据包,由于将上述关键帧和编码帧进行分割后再传输,并且在发送所述封装后数据包后不等待接收端的反馈,按照所述第一预设时间间隔发送下一个封装后数据包,由此,能够在信号干扰大、信号弱等较差的网络环境或限制吞吐量的网络环境下,改善视频流传输阻塞、丢帧等情况。
本申请实施例公开了一种具体的视频传输方法,参见图2所示,该方法可以包括以下步骤:
步骤S21:获取图像序列,并基于预设的编码码率对所述图像序列进行编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧。
步骤S22:基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包。
步骤S23:将所述数据包缓存至数据包缓存区,并生成数据包发送列表;基于预设的数据包格式向所述数据包填充数据包头信息,以得到所述封装后数据包;其中,所述数据包头信息包括数据包序号、等待应答包序号、帧组序号、重发次数、帧组内包序号和帧组内包数量。
可以理解的是,在上述数据包缓存区中向分割后得到的数据包中填充相应的数据包头信息,上述数据包序号为分割后的数据包依次放入上述数据包缓存区的顺序编号,上述等待应答包序号为上述数据包缓存区中最小的数据包序号,即发送列表中最早的数据包的数据包序号,用于确定发送端等待接收端应答的起始数据包编号;上述帧组序号为上述目标帧组的序号,即一个目标帧组内的数据包的帧组序号相同,以便基于上述帧组序号确定封装后数据包是否属于同一个目标帧组;上述重发次数为该封装后数据包的发送次数,上述帧组内包序号为目标帧组内该数据包的顺序号,上述帧组内包数量为目标帧组内数据包的数量;上述帧组序号、帧组内包序号和帧组内包数量,用于接收端接收到封装后数据包后重组为上述目标帧组。
本实施例中,所述将所述数据包缓存至数据包缓存区,并生成数据包发送列表的过程中,还可以包括:查看所述数据包缓存区的空闲率;基于所述空闲率调整所述数据包分割长度;基于所述空闲率确定出对应的期望帧率和期望清晰度,并基于所述期望帧率和所述期望清晰度调整所述编码码率。可以理解的是,通过查看数据包缓存区的空闲率,即剩余缓存资源比例,然后基于上述空闲率调整上述数据包分割长度,在空闲率较小时可以减小数据包分割长度,以适合网络传输环境;并基于上述空闲率调整编码码率,具体的,根据上述空闲率确定出对应的期望帧率和期望清晰度,然后根据上述期望帧率和上述期望清晰度调整上述编码码率;
例如,空闲率>50%时,按照目标帧率的100%,目标清晰度的100%确定出编码码率;50%>空闲率>40%时,按照目标帧率的80%,目标清晰度的90%确定出编码码率;40%>空闲率>30%时,按照目标帧率的80%,目标清晰度的80%确定出编码码率;30%>空闲率>20%时,按照目标帧率的50%,目标清晰度的50%确定出编码码率;20%>空闲率>5%时,按照目标帧率的40%,目标清晰度的40%确定出编码码率;空闲率<5%时,在当前目标帧组编码结束后,延迟一个图像序列,并当检测到空闲率大于5%时,再重新开始编码。并且,可以在上述目标帧组的关键帧编码结束后,在目标帧组的最后2至3个编码帧编码之前调整上述编码码率,以便确保下一个关键帧可以利用新的编码码率进行编码。
可见,通过缓存区的空闲率调整数据包分割长度和编码码率,由于缓存区的空闲率可以反映数据传输的状态,因此通过上述空闲率实时调整上述数据包分割长度和编码码率可以降低视频流数据,进而避免丢包和阻塞等情况的发生。
步骤S24:基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。
本实施例中,具体的可以按照第一预设时间间隔依次循环上述发送列表中前20到30个封装后数据包,并以UDP方式进行发送。
步骤S25:修改所述封装后数据包的所述等待应答包序号和所述重发次数;若所述重发次数达到重发次数阈值,则读取所述封装后数据包的所述帧组序号,并从所述数据包缓存区中剔除含有相同的所述帧组序号的封装后数据包,并更新所述数据包发送列表。
本实施例中,通过判断封装后数据包的重发次数,将重发次数达到重发次数阈值的封装后数据包,以及与该封装后数据包具有相同帧组序号的封装后数据包从上述缓存区中剔除,并更新上述数据包发送列表;本实施例中,上述重发次数阈值可以为3次;这样一来,基于重发次数从数据包缓存区中剔除相应的封装后数据包,缓解数据包缓存区的压力,提高传输效率。
步骤S26:查看所述数据包缓存区的所述空闲率;若所述空闲率小于空闲率阈值,则从所述数据包缓存区中剔除所述帧组序号最小的所述封装后数据包,并更新所述数据包发送列表。
本实施例中,上述空闲率阈值可以为5%,即若上述空闲率小于5%,则从数据包缓存区中剔除含有的帧组序号最小的封装后数据包,并更新数据包发送列表,可以缓解数据包缓存区的压力,提高传输效率。
步骤S27:获取所述接收端基于第二预设时间间隔发送的数据包接收信息;基于所述数据包接收信息确定出所述接收端已接收的所述封装后数据包,并将相应的所述封装后数据包从所述数据包缓存区中剔除,并更新所述数据包发送列表。
本实施例中,通过获取接收端发送的数据包接收信息,将接收端接收到的封装后数据包从数据包缓存区中剔除,根据接收端发送的数据包接收信息,从数据包缓存区中剔除接收端接收到的封装后数据包,提高了传输效率,避免了丢包和堵塞情况的发生;其中,上述第二预设时间间隔可以在30ms至50ms之间,并且可以根据上述第一预设时间间隔对上述第二预设时间间隔适应性的调整。
例如图3所示,本实施例通过将编码后得到的关键帧和编码帧分包放入数据包缓存区,然后取缓存区中的封装后数据包发送给接收端,并根据相应的剔除策略,从数据包缓存区中剔除相应封装后数据包,提高了传输效率,避免了丢包和堵塞情况的发生。
其中,关于上述步骤S21、步骤S22、步骤S24的具体过程可以参考前述实施例公开的相应内容,在此不再进行赘述。
由上可见,本实施例中通过重发次数、数据包缓存区的空闲率以及发送端发送的数据包接收信息,从数据包缓存区中剔除相应的封装后数据包,相比于现有技术中,在接收到上一个数据包的反馈后再发送下一个数据包的方式,本方案直接发送上述封装后数据包,然后再根据相应的信息从数据包缓存区中剔除接收端接收到的封装后数据包,提高了传输效率,避免了长期堵塞情况的发生。
本申请实施例公开了一种视频传输方法,应用于接收端,所述接收端用于获取发送端基于上述实施例所述的视频传输方法传输的封装后数据包,参见图4所示,该方法可以包括以下步骤:
步骤S31:根据所述封装后数据包的数据包头信息重组所述封装后数据包,以得到关键帧和编码帧。
本实施例中,上述数据包头信息包括数据包序号、等待应答包序号、帧组序号、重发次数、帧组内包序号和帧组内包数量,通过数据包头信息中的帧组序号、帧组内包序号和帧组内包数量对上述封装后数据包进行重组,重组相应的封装后数据包以得到上述关键帧和上述编码帧。
步骤S32:将所述关键帧和所述编码帧按接收顺序解码后实时传输至上层显示应用,以得到视频画面。
本实施例中,在得到上述关键帧和上述编码帧后,按接收顺序解码后实时传输至上层显示应用,以向用户展现视频画面,上述上层显示应用可以为显示屏;可以理解的是,接收端在接收到上述封装后数据包后,对实时接收到的封装后数据包与历史接收到的封装后数据包进行重组,如果能重组为上述关键帧或编码帧,则实时将重组后得到的关键帧或编码帧传输至上层显示应用,以显示相应的视频画面。
本实施例中,所述视频传输方法,还可以包括:将所述封装后数据包存放至本地缓存区,并根据获取的所述封装后数据包更新相应的数据包接收信息,并基于第二预设时间间隔向所述发送端发送所述数据包接收信息;判断是否存在所述封装后数据包在预设时长后没有重组为所述目标帧组,若存在,则将所述封装后数据包及含有相同帧组序号的封装后数据包从所述本地缓存区中剔除。
可以理解的是,基于第二预设时间间隔向发送端反馈数据包接收信息,以便发送端基于上述数据包接收信息剔除发送端的数据包缓存区中相应的封装后数据包;上述数据包接收信息的头信息中包含起始数据包号,用于表征此数据包编号之前的封装后数据包可认为已全部接收或丢弃;上述数据包接收信息的数据信息中包含每个封装后数据包的接收状态,以位为单位,即每个位表示一个封装后数据包,置1表示已接收,置0表示未接收。并且,判断是否存在封装后数据包在预设时长后依旧没有重组为目标帧组,若存在,则将该封装后数据包及含有相同帧组序号的封装后数据包从本地缓存区中剔除;上述预设时长可以为150ms至200ms之间。
由上可见,本实施例中,首先接收由上述发送端基于第一个和第二个实施例所述的视频传输方法传输的封装后数据包,然后根据所述封装后数据包的数据包头信息重组所述封装后数据包,以得到关键帧和编码帧,并将所述关键帧和所述编码帧按接收顺序解码后实时传输至上层显示应用,以得到视频画面;同时,向发送端发送数据包接收信息,以便发送端基于上述数据包接收信息剔除发送端的数据包缓存区中相应的封装后数据包,这样一来,提高了视频流传输效率,避免了长期堵塞情况的发生。
相应的,本申请实施例还公开了一种视频传输装置,参见图5所示,该装置包括:
目标帧组获取模块11,用于获取图像序列,并基于预设的编码码率对所述图像序列进行编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧;
分割模块12,用于基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包;
数据包封装模块13,用于基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包;
数据包发送模块14,用于基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面。
在一些具体实施例中,所述数据包封装模块13具体可以包括:
缓存单元,用于将所述数据包缓存至数据包缓存区,并生成数据包发送列表;
数据包头信息填充单元,用于基于预设的数据包格式向所述数据包填充数据包头信息,以得到所述封装后数据包;其中,所述数据包头信息包括数据包序号、等待应答包序号、帧组序号、重发次数、帧组内包序号和帧组内包数量;
数据包分割长度确定单元,用于查看所述数据包缓存区的空闲率;基于所述空闲率调整所述数据包分割长度;
编码码率确定单元,用于基于所述空闲率确定出对应的期望帧率和期望清晰度,并基于所述期望帧率和所述期望清晰度调整所述编码码率。
在一些具体实施例中,所述视频传输装置具体可以包括:
第一剔除单元,用于修改所述封装后数据包的所述等待应答包序号和所述重发次数;若所述重发次数达到重发次数阈值,则读取所述封装后数据包的所述帧组序号,并从所述数据包缓存区中剔除含有相同的所述帧组序号的封装后数据包,并更新所述数据包发送列表;
第二剔除单元,用于查看所述数据包缓存区的所述空闲率;若所述空闲率小于空闲率阈值,则从所述数据包缓存区中剔除所述帧组序号最小的所述封装后数据包,并更新所述数据包发送列表。
第三剔除单元,用于获取所述接收端基于第二预设时间间隔发送的数据包接收信息;基于所述数据包接收信息确定出所述接收端已接收的所述封装后数据包,并将相应的所述封装后数据包从所述数据包缓存区中剔除,并更新所述数据包发送列表。
进一步的,本申请实施例还公开了一种电子设备,参见图6所示,图中的内容不能被认为是对本申请的使用范围的任何限制。
图6为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的视频传输方法中的相关步骤。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统221、计算机程序222及包括封装后数据包在内的数据223等,存储方式可以是短暂存储或者永久存储。
其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,以实现处理器21对存储器22中海量数据223的运算与处理,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的视频传输方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请实施例还公开了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的视频传输方法步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种视频传输方法、装置、设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种视频传输方法,其特征在于,应用于发送端,包括:
获取图像序列,并基于预设的编码码率对所述图像序列进行实时编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧;
基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包;
基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包;
基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面;
其中,所述视频传输方法,还包括:
基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包之后,将所述数据包缓存至数据包缓存区,并生成数据包发送列表;
获取所述接收端基于第二预设时间间隔发送的数据包接收信息;所述第二预设时间间隔大于所述第一预设时间间隔;
基于所述数据包接收信息确定出所述接收端已接收的所述封装后数据包,并将相应的所述封装后数据包从所述数据包缓存区中剔除,并更新所述数据包发送列表。
2.根据权利要求1所述的视频传输方法,其特征在于,所述基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包,包括:
基于预设的数据包格式向所述数据包填充数据包头信息,以得到所述封装后数据包;其中,所述数据包头信息包括数据包序号、等待应答包序号、帧组序号、重发次数、帧组内包序号和帧组内包数量;其中,所述等待应答包序号为所述数据包缓存区中最小的数据包序号。
3.根据权利要求2所述的视频传输方法,其特征在于,所述将所述数据包缓存至数据包缓存区,并生成数据包发送列表的过程中,还包括:
查看所述数据包缓存区的空闲率;
基于所述空闲率调整所述数据包分割长度;
基于所述空闲率确定出对应的期望帧率和期望清晰度,并基于所述期望帧率和所述期望清晰度调整所述编码码率。
4.根据权利要求2所述的视频传输方法,其特征在于,所述基于第一预设时间间隔向接收端发送所述封装后数据包之后,还包括:
修改所述封装后数据包的所述等待应答包序号和所述重发次数;
若所述重发次数达到重发次数阈值,则读取所述封装后数据包的所述帧组序号,并从所述数据包缓存区中剔除含有相同的所述帧组序号的封装后数据包,并更新所述数据包发送列表。
5.根据权利要求3所述的视频传输方法,其特征在于,所述基于第一预设时间间隔向接收端发送所述封装后数据包之后,还包括:
查看所述数据包缓存区的所述空闲率;
若所述空闲率小于空闲率阈值,则从所述数据包缓存区中剔除所述帧组序号最小的所述封装后数据包,并更新所述数据包发送列表。
6.一种视频传输方法,其特征在于,应用于接收端,所述接收端用于获取发送端通过权利要求1至5任一项方法传输的封装后数据包,所述方法包括:
根据所述封装后数据包的数据包头信息重组所述封装后数据包,以得到关键帧和编码帧;
将所述关键帧和所述编码帧按接收顺序解码后实时传输至上层显示应用,以得到视频画面。
7.根据权利要求6所述的视频传输方法,其特征在于,还包括:
将所述封装后数据包存放至本地缓存区,并根据获取的所述封装后数据包更新相应的数据包接收信息,并基于第二预设时间间隔向所述发送端发送所述数据包接收信息;
判断是否存在所述封装后数据包在预设时长后没有重组为所述目标帧组,若存在,则将所述封装后数据包及含有相同帧组序号的封装后数据包从所述本地缓存区中剔除。
8.一种视频传输装置,其特征在于,包括:
目标帧组获取模块,用于获取图像序列,并基于预设的编码码率对所述图像序列进行实时编码得到相应的关键帧或编码帧,以得到目标帧组;所述目标帧组包含一个关键帧以及所述关键帧后的若干个编码帧;
分割模块,用于基于数据包分割长度实时对获取的所述关键帧或所述编码帧进行分割,以得到多个数据包;
数据包封装模块,用于基于预设的数据包格式向所述数据包填充数据包头信息,以得到封装后数据包;
数据包发送模块,用于基于第一预设时间间隔向接收端发送所述封装后数据包,以便所述接收端基于所述封装后数据包的所述数据包头信息重组所述关键帧和所述编码帧,以得到视频画面;
所述视频传输装置,还包括:
缓存单元,用于将所述数据包缓存至数据包缓存区,并生成数据包发送列表;
数据包接收信息获取单元,用于获取所述接收端基于第二预设时间间隔发送的数据包接收信息;所述第二预设时间间隔大于所述第一预设时间间隔;
数据包剔除及列表更新单元,用于基于所述数据包接收信息确定出所述接收端已接收的所述封装后数据包,并将相应的所述封装后数据包从所述数据包缓存区中剔除,并更新所述数据包发送列表。
9.一种电子设备,其特征在于,包括:
存储器,用于保存计算机程序;
处理器,用于执行所述计算机程序,以实现如权利要求1至7任一项所述的视频传输方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中计算机程序被处理器执行时实现如权利要求1至7任一项所述的视频传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011110306.4A CN112235616B (zh) | 2020-10-16 | 2020-10-16 | 一种视频传输方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011110306.4A CN112235616B (zh) | 2020-10-16 | 2020-10-16 | 一种视频传输方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112235616A CN112235616A (zh) | 2021-01-15 |
CN112235616B true CN112235616B (zh) | 2021-07-13 |
Family
ID=74118493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011110306.4A Active CN112235616B (zh) | 2020-10-16 | 2020-10-16 | 一种视频传输方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112235616B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113596454A (zh) * | 2021-08-02 | 2021-11-02 | 成都引力视创科技有限公司 | 一种铁路轨道图像处理方法、系统、存储介质及电子设备 |
CN114051173B (zh) * | 2021-10-09 | 2023-08-08 | 广州广哈通信股份有限公司 | 一种基于rtp扩展头部的视频帧可靠传输方法、装置及设备 |
CN114896189B (zh) * | 2022-05-07 | 2023-09-26 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种高速总线数据的缓存方法、装置、设备及存储介质 |
CN115134629B (zh) * | 2022-05-23 | 2023-10-31 | 阿里巴巴(中国)有限公司 | 视频传输方法、系统、设备及存储介质 |
CN115190142A (zh) * | 2022-06-20 | 2022-10-14 | 深圳潜水侠创新动力科技有限公司 | 一种管道机器人的数据传输系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090049109A (ko) * | 2007-11-13 | 2009-05-18 | 바로비젼(주) | 고정 비트율 영상 서비스를 위한 비트 할당 방법 |
CN101795297A (zh) * | 2010-03-19 | 2010-08-04 | 北京天天宽广网络科技有限公司 | 基于p2p技术的直播时移系统及其方法 |
CN102497578A (zh) * | 2011-11-25 | 2012-06-13 | 武汉大学 | 一种3g网络环境下的移动音视频实时通信方法 |
CN102740064A (zh) * | 2012-06-15 | 2012-10-17 | 福建星网视易信息系统有限公司 | 对讲系统中流媒体传输的组包方法 |
CN104135486A (zh) * | 2014-08-08 | 2014-11-05 | 浙江奇汇电子提花机有限公司 | 一种基于tcp协议的流媒体无线自适应传输方法 |
CN106303693A (zh) * | 2015-05-25 | 2017-01-04 | 北京视联动力国际信息技术有限公司 | 一种视频数据解码的方法及装置 |
CN109660549A (zh) * | 2018-12-29 | 2019-04-19 | 贵阳朗玛信息技术股份有限公司 | 一种视频帧数据包发送、接收方法及装置 |
-
2020
- 2020-10-16 CN CN202011110306.4A patent/CN112235616B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090049109A (ko) * | 2007-11-13 | 2009-05-18 | 바로비젼(주) | 고정 비트율 영상 서비스를 위한 비트 할당 방법 |
CN101795297A (zh) * | 2010-03-19 | 2010-08-04 | 北京天天宽广网络科技有限公司 | 基于p2p技术的直播时移系统及其方法 |
CN102497578A (zh) * | 2011-11-25 | 2012-06-13 | 武汉大学 | 一种3g网络环境下的移动音视频实时通信方法 |
CN102740064A (zh) * | 2012-06-15 | 2012-10-17 | 福建星网视易信息系统有限公司 | 对讲系统中流媒体传输的组包方法 |
CN104135486A (zh) * | 2014-08-08 | 2014-11-05 | 浙江奇汇电子提花机有限公司 | 一种基于tcp协议的流媒体无线自适应传输方法 |
CN106303693A (zh) * | 2015-05-25 | 2017-01-04 | 北京视联动力国际信息技术有限公司 | 一种视频数据解码的方法及装置 |
CN109660549A (zh) * | 2018-12-29 | 2019-04-19 | 贵阳朗玛信息技术股份有限公司 | 一种视频帧数据包发送、接收方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112235616A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112235616B (zh) | 一种视频传输方法、装置、设备及介质 | |
CN109729439B (zh) | 实时视频传输方法 | |
US10542064B2 (en) | Method, server side and system for computing bandwidth of network transmission of streaming media | |
CN113271316B (zh) | 多媒体数据的传输控制方法和装置、存储介质及电子设备 | |
CN110557655B (zh) | 一种视频画面显示方法、装置、电子设备及存储介质 | |
US7653749B2 (en) | Remote protocol support for communication of large objects in arbitrary format | |
KR101921015B1 (ko) | 데이터 통신 시스템 내에서의 데이터 패킷들의 전달 방법 | |
US20160294508A1 (en) | Communication Device, System and Method | |
CN107911842B (zh) | Lora网络服务器的数据传输方法、系统、介质及装置 | |
CN113364508B (zh) | 一种语音数据的传输控制方法、系统及设备 | |
CN114221909B (zh) | 数据传输方法、装置、终端及存储介质 | |
CN104270594A (zh) | 数据包发送与接收的方法及设备 | |
CN106817350A (zh) | 报文处理方法及装置 | |
EP3905708A1 (en) | Method and server for audio and/or video content delivery | |
US20140112354A1 (en) | Method, apparatus, and system for processing streaming media data | |
CN109862400B (zh) | 一种流媒体传输方法、装置及其系统 | |
CN107438187B (zh) | 实时视频传输的带宽调整 | |
WO2013063958A1 (zh) | 一种视频处理方法及系统、相关设备 | |
CN105376614A (zh) | 视频质量优化方法和装置 | |
CN105611424A (zh) | 基于rudp的音视频可靠传输qos方法、系统 | |
CN111510447B (zh) | 一种网络传输方法及相关装置 | |
CN113329040A (zh) | 媒体流转发过程中的协议转换方法、装置 | |
CN107548105B (zh) | 一种基于udp的数据传输确认方法和基站 | |
CN116896567B (zh) | 网络层协议传输数据方法和装置 | |
WO2023095438A1 (ja) | 端末装置、無線通信システム、および、端末装置の処理方法 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 604 and 605, building 1, Zhejiang nongkechuang garden, No. 768, Jianghong Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant after: Hangzhou Mirui Technology Co.,Ltd. Address before: Room 604 and 605, building 1, Zhejiang nongkechuang garden, No. 768, Jianghong Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Applicant before: HANGZHOU MEARI TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |