CN114338830A - 数据传输方法、装置、计算机可读存储介质及计算机设备 - Google Patents

数据传输方法、装置、计算机可读存储介质及计算机设备 Download PDF

Info

Publication number
CN114338830A
CN114338830A CN202210004736.0A CN202210004736A CN114338830A CN 114338830 A CN114338830 A CN 114338830A CN 202210004736 A CN202210004736 A CN 202210004736A CN 114338830 A CN114338830 A CN 114338830A
Authority
CN
China
Prior art keywords
frame
data
frame data
data transmission
thread
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
Application number
CN202210004736.0A
Other languages
English (en)
Other versions
CN114338830B (zh
Inventor
王乐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210004736.0A priority Critical patent/CN114338830B/zh
Publication of CN114338830A publication Critical patent/CN114338830A/zh
Application granted granted Critical
Publication of CN114338830B publication Critical patent/CN114338830B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本申请公开了一种数据传输方法、装置、计算机可读存储介质及计算机设备,可应用于自动驾驶、智慧交通技术领域。该方法通过接收第一帧数据获取请求;运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。该方法可以提升数据传输的效率。

Description

数据传输方法、装置、计算机可读存储介质及计算机设备
技术领域
本申请涉及数据处理领域,具体涉及一种数据传输方法、装置、计算机可读存储介质及计算机设备。
背景技术
自动驾驶又称无人驾驶或者电脑驾驶,是一种通过电脑系统实现实现驾驶控制的技术。自动驾驶技术依靠人工智能、视觉计算、雷达和全球定位系统协同合作,让电脑可以在没有任何人类主动的操作下,自动安全地操作机动车辆。该技术在二十世纪已有数十年的历史,二十一世纪初呈现出接近实用化的趋势。
随着自动驾驶技术的迅速发展,该领域的技术人员也开发了许多适用自动驾驶场景的算法。可以通过仿真云平台来模拟这些算法在真实场景中的效果来对算法进行测试,仿真云平台可以将模拟画面以帧数据形式进行保存以便回放查看。
目前,在对仿真云平台保存的这些帧数据进行回放查看时,帧数据传输的效率较低。
发明内容
本申请实施例提供一种数据传输方法、装置、计算机可读存储介质及计算机设备,该数据传输方法可以有效提升数据传输的效率。
本申请第一方面提供一种数据传输方法,方法包括:
接收第一帧数据获取请求;
运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;
运行第三数据传输线程以所述获取速率信息对应的目标速率从所述帧数据队列逐帧提取帧数据,并将提取到的帧数据按所述目标速率逐帧发送给所述第一帧数据获取请求的发送方。
相应的,本申请第二方面提供一种数据传输装置,装置包括:
接收单元,用于接收第一帧数据获取请求;
第一运行单元,用于运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
第二运行单元,用于运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;
第三运行单元,用于运行第三数据传输线程以所述获取速率信息对应的目标速率从所述帧数据队列逐帧提取帧数据,并将提取到的帧数据按所述目标速率逐帧发送给所述第一帧数据获取请求的发送方。
在一些实施例中,所述第一运行子单元,包括:
第一获取子单元,用于响应所述第一帧数据获取请求,获取第一数据传输处理类;
第一运行子单元,用于根据所述第一帧数据获取请求中的参数对所述第一数据传输处理类进行入参,以运行第一数据传输线程;
解析子单元,用于基于所述第一数据处理线程解析所述第一帧数据获取请求,得到所述第一帧数据获取请求中包含的第一起始帧信息以及获取速率信息。
在一些实施例中,本申请提供的数据传输装置还包括:
第一生成单元,用于基于所述第一数据传输线程调用第二数据传输处理类以生成第二数据传输线程;
第二生成单元,用于基于所述第一数据传输线程调用第三数据传输处理类生成第三数据传输线程。
在一些实施例中,所述第一运行单元,包括:
第二运行子单元,用于当检测到当前运行的线程中存在与所述第一帧数据获取请求匹配的第一数据传输线程时,基于所述第一数据传输线程解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
第三运行子单元,用于当检测到当前运行的线程中不存在与所述第一帧数据获取请求匹配的第一数据传输线程时,运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息。
在一些实施例中,第二运行单元,包括:
检测子单元,用于对帧数据队列中的帧数据进行检测;
第二获取子单元,用于当检测到所述帧数据队列中存在帧数据时,获取所述帧数据队列中存入时间最晚的帧数据的目标帧信息;
第四运行子单元,用于当所述目标帧信息对应的帧数据为所述第一起始帧信息对应的帧数据的前一帧时,运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据。
在一些实施例中,本申请提供的数据传输装置还包括:
清空子单元,用于当所述目标帧信息对应的帧数据不为所述第一起始帧信息对应的帧数据的前一帧时,清空所述帧数据队列中的帧数据;
执行子单元,用于执行运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据的步骤。
在一些实施例中,本申请提供的数据传输装置,还包括:
检测单元,用于对所述帧数据队列中帧数据的数量进行实时检测;
触发单元,用于当所述帧数据队列中的帧数据数量达到预设数量时,触发所述第二数据传输线程暂停执行获取帧数据的任务。
在一些实施例中,本申请提供的数据传输装置,还包括:
解析单元,用于当在所述第二数据传输线程的运行过程中接收到第二帧数据获取请求时,基于所述第一数据传输线程解析所述第二帧数据获取请求,得到第二起始帧信息;
第三生成单元,用于基于所述第一数据传输线程生成与所述第二起始帧信息匹配的线程中断指令并将所述线程中断指令发送给所述第二数据传输线程,以中断所述第二数据传输线程当前执行的任务并重新从所述第二起始帧信息对应的帧数据开始逐帧进行帧数据获取。
在一些实施例中,本申请提供的数据传输装置还包括:
第四生成单元,用于当在所述第三数据传输线程的运行过程中接收到暂停帧数据获取的暂停指令时,基于所述第一数据传输线程生成帧数据暂停发送指令;
发送单元,用于基于所述第一数据传输线程向所述第三数据传输线程发送所述帧数据暂停发送指令以触发所述第三数据传输线程暂停执行发送帧数据的任务。
本申请第三方面还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本申请第一方面所提供的数据传输方法中的步骤。
本申请第四方面提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本申请第一方面所提供的数据传输方法中的步骤。
本申请第五方面提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现第一方面所提供的数据传输方法中的步骤。
本申请实施例提供的数据传输方法,通过接收第一帧数据获取请求;运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
以此,本申请提供的数据传输方法,通过将数据传输线程划分为几个相互独立运行且互不干扰的数据传输进程,使得单线程的任务可以由多线程并发执行,从而可以大大提升数据传输的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请中数据传输的一个场景示意图;
图2是本申请提供的数据传输方法的流程示意图;
图3是本申请提供的数据传输方法的另一流程示意图;
图4是本申请提供的数据传输方法对应的系统架构示意图;
图5是本申请提供的数据传输装置的结构示意图;
图6是本申请提供的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种数据传输方法、装置、计算机可读存储介质及终端。其中,该数据传输方法可以使用于数据传输装置中。该数据传输装置可以集成在计算机设备中,该计算机设备可以是终端也可以是服务器。其中,终端可以为手机、平板电脑、笔记本电脑、智能电视、穿戴式智能设备、个人计算机(PC,Personal Computer)以及车载终端等设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。其中,服务器可以为区块链中的节点。
请参阅图1,为本申请提供的数据传输方法的一场景示意图。如图所示,服务器A接收终端B发送的第一帧数据获取请求,运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
需要说明的是,图1所示的数据传输场景示意图仅仅是一个示例,本申请实施例描述的数据传输场景是为了更加清楚地说明本申请的技术方案,并不构成对于本申请提供的技术方案的限定。本领域普通技术人员可知,随着数据传输场景演变和新业务场景的出现,本申请提供的技术方案对于类似的技术问题,同样适用。
基于上述实施场景以下分别进行详细说明。
在相关技术中,在对帧数据进行传输时,往往采用一个庞大的线程来处理帧数据传输的整个过程,包括接收终端发送的指令并进行解析确定指令需求,根据指令需求从帧数据存储位置获取帧数据以及根据指令需求将帧数据发送给终端。由于所有任务都集成在一个线程中,导致线程代码十分臃肿,且逻辑不够清晰。另外,由于所有数据传输任务集成在一个线程中,导致代码之间的耦合性太强,当需要对数据传输任务进行调整时,需要进行全面的调整使得调整难度太大,进而影响到帧数据的传输效率。为解决上述问题导致的帧数据传输效率下降的问题,本申请提供一种帧数据传输方法,以期提升帧数据传输效率。
本申请实施例将从数据传输装置的角度进行描述,该数据传输装置可以集成在计算机设备中。其中,计算机设备可以是终端也可以是服务器。其中,终端可以为手机、平板电脑、笔记本电脑、智能电视、穿戴式智能设备、个人计算机(PC,Personal Computer)以及车载终端等设备。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、网络加速服务(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。如图2所示,为本申请提供的数据传输方法的流程示意图,该方法包括:
步骤110,接收第一帧数据获取请求。
其中,帧数据可以为图像帧数据,即在本申请中,图像数据以一帧一帧的形式进行传输。可以理解的是,图像帧的帧数据是组成视频的最小单位,多个连续的图像帧数据可以构成视频数据。
其中,图像帧数据可以为任意内容图像对应的帧数据,具体地,在本申请实施例中,帧数据可以为仿真云平台生成的帧数据。其中,仿真云平台是利用集成、封装、云计算以及高性能计算等技术将仿真相关工具软件、知识、经验以及计算硬件等资源进行整合所形成的仿真服务云平台。仿真云平台可以实现各类现实事物的仿真运行,可以解决现实事物中某些项目验证难度大或者验证成本高的问题,极大提升项目验证效率。目前,随着自动驾驶技术的发展,仿真云平台也可以应用于自动驾驶项目的验证中。仿真云平台在对自动驾驶项目进行验证时,可以产生许多仿真真实驾驶场景的图像,这些图像以一帧一帧的数据形式保存下来,用户可以在仿真云平台对应的应用中回放这些帧数据,从而对自动驾驶项目的验证结果进行确认。
帧数据获取请求可以为由其他计算机设备发送的帧数据获取请求,也可以为装载数据传输装置的计算机设备中的其他装置向数据处理装置发送的数据获取请求。例如,当帧数据获取请求对应需要获取的帧数据为仿真云平台中的自动驾驶项目验证帧数据时,这些帧数据可以保存在仿真云平台的云服务器中,此时数据传输装置也可以集成在云服务器中,当用户需要通过终端回放这些帧数据时,便可以通过终端中装载的仿真云平台客户端向云服务器发送帧数据获取请求以获取到帧数据并进行渲染播放。
当帧数据获取请求为其他计算机设备发送的帧数据获取请求时,该获取请求可以是首次发送,也可以是非首次发送。当获取请求为首次发送时,数据传输装置一般需要先跟发送前述帧数据获取请求的计算机设备建立通讯连接,然后生成处理该数据传输任务的相应线程,接着进一步执行相关线程以获取到帧数据获取请求对应的帧数据并发送给帧数据请求方。
当获取请求不是首次发送时,说明数据传输装置以及和发送该帧数据获取请求的计算机设备之间建立了数据传输连接,以及已经生成了相应的数据传输线程来处理该数据传输任务。此时接收到的帧数据获取请求可能是对传输过程的调节指令,那么便需要对该帧数据获取请求进行解析并根据解析得到的指令对数据传输过程进行相应控制。
其中,当获取请求为首次发送时,数据传输装置在与帧数据获取请求发送方建立通讯连接时,可以根据获取请求来具体确定数据传输协议,数据传输协议可以为超文本传输协议(Hyper Text Transfer Protocol,HTTP)也可以是Websocket协议。其中,HTTP协议是是一个简单的请求-响应协议,它通常运行在传输控制协议(Transmission ControlProtocol,TCP)之上,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。Websocket协议是一种在单个TCP连接上进行全双工通信的协议,它是一个持久化的协议,相对于HTTP这种非持久的协议来说,只需要经过一次HTTP请求,就可以做到源源不断的信息传送了。在本申请实施例中,帧数据获取请求的发送方与数据传输装置之间可以建立Websocket协议,如此只需进行一次帧数据获取请求便可以源源不断地进行帧数据传输。
其中,此处接收到的帧数据获取请求为与其他帧数据获取请求进行区分,可以称为第一帧数据获取请求。
步骤120,运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息。
其中,如前所述,当数据传输装置接收到第一帧数据获取请求后,可以与帧数据获取请求的发送方建立Websocket协议的数据通讯,即生成了一个Websocket会话。数据传输装置可以为该Websocket会话分配一个数据传输线程,该线程可以称为第一数据传输线程或者控制线程。该线程可以用于管理通讯连接事件以及通过该通讯连接接收指令或者请求并进行相应的数据传输控制。其中,线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
然后,便可以控制该第一数据传输线程对第一帧数据获取请求进行解析,以确定其中包含的第一起始帧信息以及获取速率信息。其中,在帧数据的存储位置中,帧数据可以为按照一定的顺序进行顺序排列的。例如在仿真云平台中生成的帧数据,就可以根据其生成顺序进行顺序排列,然后,可以进一步对这些帧数据进行排序以及编号,确定每一帧数据对应的编号信息。如此,用户在对这些帧数据进行播放时,可以从任意位置开始播放,当用户确定了一个播放开始位置时,便确定了起始帧信息,然后便根据该起始帧信息生成帧数据获取请求发送给数据传输装置。另外,用户还可以设置播放倍速,例如1倍速、1.5倍速以及2倍速等,不同的播放速度对应了不同的帧数据的获取速率。因此,可以将起始帧信息和帧数据的获取速率信息一同打包到帧数据获取请求中发送给数据传输装置。
然后,第一数据传输线程可以根据解析得到的起始帧信息和获取熟虑信息进行数据传输控制。
其中,在一些实施例中,运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息,包括:
A、当检测到当前运行的线程中存在与第一帧数据获取请求匹配的第一数据传输线程时,基于第一数据传输线程解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
B、当检测到当前运行的线程中不存在与第一帧数据获取请求匹配的第一数据传输线程时,运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息。
在本申请实施例中,当数据传输装置接收到第一帧数据获取请求后,先在数据传输装置后台运行的线程中查找是否存在与第一帧数据获取请求匹配的第一数据传输线程,该操作目的为判断是否为首次接收到第一帧数据获取请求。若确定数据传输装置当前运行的线程中存在与第一帧数据获取请求匹配的第一数据传输线程,则确定已经不是首次接收到第一帧数据获取请求了,那么相应地应该也存在执行相应数据传输任务的其他线程。此时由于已经确定存在第一数据传输线程,便无需再次运行新的第一数据传输线程,可以直接调用该第一数据传输线程进行相应的数据传输任务,包括解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息。
如果检测确定数据传输装置当前运行的线程中不存在与第一帧数据获取请求匹配的第一数据传输线程时,则需根据该第一帧数据获取请求创建Websocket连接(即Websocket会话)并为该连接分配一个第一数据传输线程,即创建一个第一数据传输线程,然后再基于新创建的第一数据传输线程进行相应的数据传输控制。
其中,在一些实施例中,运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息,包括:
1、响应第一帧数据获取请求,获取第一数据传输处理类;
2、根据第一帧数据获取请求中的参数对第一数据传输处理类进行入参,以运行第一数据传输线程;
3、基于第一数据处理线程解析第一帧数据获取请求,得到第一帧数据获取请求中包含的第一起始帧信息以及获取速率信息。
其中,在本申请实施例中,第一帧数据获取请求可以为触发创建Websocket任务的请求,即在该第一帧数据获取请求之前,数据传输装置并未接收到其他针对该帧数据的获取请求。在该情况下,当数据传输装置基于Websocket连接接收到第一帧数据获取请求时,便可以创建一个前述第一数据传输线程。具体地,在本申请实施例中,各线程被打包成多个类分别进行调用,当需要创建第一数据传输线程时,可以获取第一数据传输线程对应的第一数据传输处理类。然后,根据第一帧数据获取请求中的参数对第一数据传输处理类进行入参操作,从而开启实现第一数据传输线程的运行。其中,类(Class)是面向对象程序设计(Object-Oriented Programming,OOP)实现信息封装的基础。类是一种用户定义的引用数据类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。运行第一数据处理线程后,第一数据处理线程根据其预先设置的功能开始执行对第一帧数据获取请求的解析任务以及对数据传输的控制任务。
在一些实施例中,本申请提供的数据传输方法还可以包括:
4、基于第一数据传输线程调用第二数据传输处理类以生成第二数据传输线程;
5、基于第一数据传输线程调用第三数据传输处理类生成第三数据传输线程。
在本申请实施例中,当首次接收到第一帧数据获取请求,根据该请求构建的Websocket任务连接启动了第一数据传输线程后,该第一数据传输线程可以进一步启动两个新的数据传输线程,此处可以分别记为第二数据传输线程和第三数据传输线程。具体地,第二数据传输线程和第三数据传输线程对应的代码也是分别进行封装打包到一个对应的类中。基于第一数据传输线程生成第二数据传输线程和第三数据传输线程的具体过程,可以为基于第一数据传输线程调用第二数据传输类和第三数据传输类,然后根据第二数据传输类和第三数据传输类分别生成第二数据传输线程和第三数据传输线程。
即在本申请实施例中,不同的功能对应了相互独立的不同的线程,而且在代码层面上,每一独立的线程对应的代码也封装为不同的类。如此,可以降低应用代码之间的耦合性,从而提升了功能的扩展性,当需要对功能进行调整时,只需对相应的类进行调整即可,大大提升了功能扩展的效率,进而可以提升数据传输的效率。
步骤130,运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列。
其中,第二数据传输线程可以为基于第一数据传输线程生成的,即数据传输装置在生成第一数据传输线程后,第一数据传输线程可以进一步生成第二数据传输线程和第三数据传输线程。其中,第二数据传输线程的功能是从帧数据存储位置逐帧获取帧数据,并转存至帧数据队列;第三数据传输线程的功能是将帧数据队列中的帧数据发送给帧数据获取请求的发送方。
具体地,第二数据传输线程对应的第二数据传输类中可以编码相应的帧数据存储位置对应的统一资源定位器地址(Uniform Resource Locator,URL),也可以编码相应的存储器信息,以使得在运行第二数据传输线程时可以从帧数据的传输位置获取到相应的帧数据。
其中,帧数据可以存储于MongoDB或者HBase中,MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为网络应用提供可扩展的高性能数据存储解决方案。HBase是一个分布式的、面向列的开源数据库,HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
第二数据传输线程从帧数据的存储位置中获取帧数据时,可以按照帧数据的排列顺序进行逐帧的获取。具体地,第二数据传输线程先接收第一数据传输线程解析第一帧数据获取请求得到的第一起始帧信息,然后在帧数据的存储位置中查找于第一起始帧信息匹配的帧数据。找到于第一起始帧信息匹配的帧数据后,便可以从该帧数据开始逐帧进行帧数据的获取。第二数据传输线程获取到一帧帧数据后,便会将该帧数据转发到帧数据队列中进行转存。
在一些实施例中,运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,包括:
1、对帧数据队列中的帧数据进行检测;
2、当检测到帧数据队列中存在帧数据时,获取帧数据队列中存入时间最晚的帧数据的目标帧信息;
3、当目标帧信息对应的帧数据为第一起始帧信息对应的帧数据的前一帧时,运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据。
其中,在本申请实施例中,在调用第二数据传输线程执行数据传输任务、从帧数据对应的存储位置进行帧数据获取并将获取到的帧数据转存至帧数据队列之前,可以先对帧数据队列中的帧数据进行检测。具体地,对帧数据队列中的帧数据进行检测,主要为检测帧数据队列中是否存在帧数据,若存在帧数据则进一步检测最后存入的帧数据的帧信息,此处可以称为目标帧信息。然后,将目标帧信息与前述第一起始帧信息进行比对,以确定目标帧信息与第一起始帧信息是否连续,即确定目标帧信息对应的帧数据是否为第一起始帧信息对应的帧数据的前一帧帧数据。例如,当目标帧信息对应的帧数据为一段连续帧数据中第20帧,第一起始帧信息对应的帧数据为该段帧数据中第21帧,那么便可以确定目标帧信息与第一起始帧信息对应的帧数据是连续的。
当确定了帧数据队列中最后一帧帧数据与第一起始帧信息对应的帧数据是连续的时,再执行调用第二数据传输线程进行从帧数据存储位置获取帧数据的步骤。
在一些实施例中,本申请提供的数据传输方法还可以包括:
4、当目标帧信息对应的帧数据不为第一起始帧信息对应的帧数据的前一帧时,清空帧数据队列中的帧数据;
5、执行运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据的步骤。
在本申请实施例中,当对帧数据队列中的帧数据进行检测确定帧数据队列中最后一帧帧数据与第一起始帧信息对应的帧数据并不连续时,为避免用户在针对帧数据进行回放时出现跳帧的情况,可以先将帧数据队列中的帧数据进行清空,然后重新调用第二数据传输线程进行帧数据的获取以及转存。如此,可以避免帧数据不连续导致播放出现跳帧的情况,从而提升用户的观看体验。
在一些实施例中,本申请提供的数据传输方法,还可以包括:
A、对帧数据队列中帧数据的数量进行实时检测;
B、当帧数据队列中的帧数据数量达到预设数量时,触发第二数据传输线程暂停执行获取帧数据的任务。
其中,在本申请实施例中,在数据传输的过程中,数据传输装置可以实时对帧数据队列中帧数据的数量进行检测,当帧数据队列中的帧数据数据达到预设数量时,例如达到40帧,便可以确定帧数据队列已经满了,此时继续第二数据传输线程继续获取帧数据则无法存入帧数据队列中,便可能会导致帧数据丢失,此时便可以触发第二数据传输线程暂停获取帧数据。进一步地,当检测到帧数据队列中帧数据的数量小于另一预设数量时,例如小于20帧,此时确定第二数据传输线程是否处于运行状态,若第二数据传输线程处于暂停状态,则可以触发第二数据传输线程开启运行,从帧数据存储位置开始获取帧数据并转存至帧数据队列中。
步骤140,运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
其中,第一数据传输线程在触发第二数据传输线程运行的同时也触发第三数据传输线程开始运行。其中第三数据传输线程主要用于从帧数据队列中逐帧提取帧数据并将提取到的帧数据按照第一数据传输线程解析的到的目标速率发送给第一帧数据获取请求的发送方。其中,第三数据传输线程在帧数据队列中提取帧数据以及将提取到的帧数据发送给第一帧数据获取请求的发送方的过程,也是按照帧数据的顺序逐帧进行的。
在一些实施例中,本申请提供的数据传输方法还包括:
1、当在第二数据传输线程的运行过程中接收到第二帧数据获取请求时,基于第一数据传输线程解析第二帧数据获取请求,得到第二起始帧信息;
2、基于第一数据传输线程生成与第二起始帧信息匹配的线程中断指令并将线程中断指令发送给第二数据传输线程,以中断第二数据传输线程当前执行的任务并重新从第二起始帧信息对应的帧数据开始逐帧进行帧数据获取。
其中,在以上述方法开启对帧数据的持续传输后,第一数据传输线程仍然可以继续接收新的数据获取请求或者其他控制指令,然后解析这些新的数据获取请求或者控制指令,根据解析得到的信息对第二数据传输线程以及第三数据传输线程的运行状态进行控制。
具体地,当在上述第二数据传输线程的运行过程中,数据传输装置接收到了新的帧数据获取请求,此处可以称为第二帧数据获取请求时,可以采用第一数据传输线程对第二帧数获取请求进行解析,得到第二帧数据获取请求中包含的第二起始帧信息。
然后,可以进一步基于第一数据传输线程生成与第二起始帧信息匹配的线程中断指令,并将该线程中断指令发送给第二数据传输线程。该线程中断指令可以中断第二数据传输线程正在执行的帧数据获取任务,并重新根据中断指令中的第二起始帧信息重新确定需要获取的帧数据,并持续进行逐帧获取。其中,可以理解的是,数据传输装置在第二数据传输线程从第二起始帧信息对应的帧数据开始重新执行帧数据获取及转存任务之前,可以先将帧数据队列中的帧数据进行清空。
在一些实施例中,本申请提供的数据传输方法还可以包括:
A、当在第三数据传输线程的运行过程中接收到暂停帧数据获取的暂停指令时,基于第一数据传输线程生成帧数据暂停发送指令;
B、基于第一数据传输线程向第三数据传输线程发送帧数据暂停发送指令以触发第三数据传输线程暂停执行发送帧数据的任务。
在本申请实施例中,数据传输装置还可以接收数据传输控制指令,例如暂停帧数据获取的暂停指令,此时数据传输装置可以基于第一数据传输线程生成与暂停指令对应的帧数据暂停发送指令,并将该帧数据暂停发送指令发送给第三数据传输线程,以使得第三数据线程暂停当前正在执行的帧数据发送任务。
根据上述描述可知,本申请实施例提供的数据传输方法,通过接收第一帧数据获取请求;运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
以此,本申请提供的数据传输方法,通过将数据传输线程划分为几个相互独立运行且互不干扰的数据传输进程,使得单线程的任务可以由多线程并发执行,从而可以大大提升数据传输的效率。
本申请还提供了一种数据传输方法,该方法可以使用于计算机设备中,该计算机设备可以为终端也可以为服务器,本申请中以计算机设备为服务器为例进行具体说明。如图3所示,为本申请提供的数据传输方法的另一流程示意图,方法具体包括:
步骤210,服务器接收终端发送的帧数据播放控制指令。
在本申请实施例中,本申请提供的数据传输方法可以应用于服务器中,具体可以应用与仿真云平台的云服务器中。在仿真云平台的云服务器中存储有帧数据,这些帧数据可以为项目仿真过程中逐帧生成的帧数据。由于这些帧数据是逐帧生成的,即帧数据的生成是有一定的时间顺序的,那么便可以按照该时间顺序将这些帧数据进行排序,并根据排序结果确定每一帧数据的编号信息。
仿真云平台具有其对应的应用程序,该应用程序可以装载在终端上,用户可以根据终端上装载的该应用程序实现对仿真云平台的访问,包括获取到仿真云平台对应的云服务器上存储的仿真结果,即前述帧数据。然后,终端上装载的该应用程序可以将从云服务器上获取到的帧数据进行渲染和播放,用户可以根据终端播放的帧数据来确定仿真结果。其中,可以理解的是,终端上装载的应用程序获取到的帧数据可以进行单帧显示播放,也可以是多帧连续播放,多帧连续播放就显示为视频播放。其中,此处应用程序只是一个示例,终端也可以通过浏览器实现对云服务器的访问。
用户可以通过应用程序展示的播放界面进行播放控制,具体地可以包括开始播放、调整播放进度、调整播放速率以及暂停播放等控制操作。用户输入一个控制操作后,终端上便可以将该控制操作转换为播放控制指令发送到云服务器中,以使得云服务器根据该播放控制指令进行帧数据的传输控制。在服务器侧,便可以为接收终端发送的根据用户输入的控制操作生成的播放控制指令。
步骤220,服务器判断是否存在与播放控制指令对应的Websocket连接。
其中,服务器在接收到终端发送的播放控制指令后,检测服务器中是否存在与该播放控制指令对应的数据通讯连接,例如Websocket连接。若已经存在与该播放控制指令对应的Websocket连接,则说明该播放控制指令为在播放过程中发出的;若不存在与该播放控制指令对应的Websocket连接,则说明该播放指令为开始播放的控制指令。
步骤230,当存在与播放控制指令对应的Websocket连接时,服务器调用Websocket连接对应的第一控制线程解析帧数据播放控制指令,得到第一初始帧信息与第一发送速率。
当服务器中存在与播放控制指令对应的Websocket连接时,说明终端已经与服务器建立了数据传输连接并且已经开启了帧数据传输。那么在服务器中运行的线程中就已经存在了传输帧数据的第一控制线程(Controller)、第一帧数据获取线程(Fetcher)以及第一帧数据发送线程(Sender)。此时服务器可以调用第一控制线程对终端发送的帧数据播放控制指令进行解析,得到该帧数据播放控制指令对应的第一初始帧信息与第一发送速率信息。
其中,第一初始帧信息为可以为帧数据播放控制指令指示的播放起始位置对应的帧数据的信息。例如,用户在帧数据播放界面拖动播放进度条到3分钟位置,那么根据时间与帧数据信息之间的映射关系可以确定该位置对应的帧数据的信息,即第一初始帧信息。用户可以将播放进度条拖动到显示的任意播放位置。
然后,用户还可以在帧数据的播放界面选择播放速率,例如0.5倍速、正常倍速、1.5倍速以及2倍速等。当用户没有选择具体倍速时,则默认为正常倍速播放,当用户选择了具体倍速时,则确定选择的速率为第一发送速率。其中,当用户点击暂停播放,则可以确定第一发送速率为0。
终端向服务器发送的帧数据播放控制指令中包含了前述第一初始帧信息与第一发送速率信息。服务器在接收到该帧数据播放控制指令后,可以调用第一控制线程对该帧数据播放控制指令进行解析,得到前述第一初始帧信息和第一发送速率信息。
步骤240,服务器通过第一控制线程向第一帧数据获取线程发送第一初始帧信息,以使得第一帧数据获取线程根据第一初始帧信息进行帧数据获取并转存至阻塞队列。
第一控制线程对播放控制指令进行解析得到第一初始帧信息后,服务器可以控制第一控制线程将第一初始帧信息发送给第一帧数据获取线程,第一帧数据获取线程据此在帧数据来源中确定第一初始帧信息对应的帧数据,然后从该帧数据开始逐帧获取帧数据。其中,帧数据来源可以为MongoDB或者HBase。
第一帧数据获取线程在获取到一帧帧数据后,便将该帧数据转存至阻塞队列(Blocking Queue)中。
在一些实施例中,当服务器通过第一控制线程向第一帧数据获取线程发送第一初始帧信息时,还可以先对阻塞队列中的帧数据进行检测。当检测到阻塞队列中存在帧数据时,可以进一步检测阻塞队列中最后一帧帧数据的帧信息,以确定阻塞队列中最后一帧帧数据与第一初始帧信息对应的帧数之间是否连续,也就是确定阻塞队列中最后一帧帧数据是否为第一初始帧信息对应的帧数据的前一帧帧数据。
如果阻塞队列中最后一帧帧数据与第一初始帧信息对应的帧数据是连续的,则可以控制第一帧数据获取线程从帧数据来源中获取帧数据并转存至阻塞队列。如果阻塞队列中最后一帧帧数据与第一初始帧信息对应的帧数据是不连续的,那么此时服务器可以控制阻塞队列清空其中的帧数据,然后再控制第一帧数据获取线程进行帧数据的获取与转存。
步骤250,服务器通过第一控制线程向第一帧数据发送线程发送第一发送速率,以使得第一帧数据发送线程根据第一发送速率从阻塞队列中提取帧数据并发送给终端。
其中,第一控制线程对播放控制指令进行解析得到第一初始帧信息和第一发送速率后,服务器还可以控制第一控制线程将第一发送速率发送给第一帧数据发送线程。第一帧数据发送线程可以将第一发送速率转换成帧数据的提取和发送速率,然后根据转换得到的帧数据提取速率从阻塞队列中提取帧数据,并以转换得到的发送速率向终端发送帧数据。
在一些实施例中,第一控制线程对接收到的帧数据播放控制指令进行解析,只得到第一发送速率信息,例如该播放速率信息为0.5倍速或者0。此时便只需对第一帧数据发送线程进行控制即可,无需对第一帧数据获取线程进行控制。例如,控制第一帧数据发送线程暂停发送帧数据,或者控制第一帧数据发送线程以0.5倍的发送速率发送帧数据。
步骤260,当不存在与播放控制指令对应的Websocket连接时,服务器为播放控制指令创建Websocket连接,并创建对应的第二控制线程。
如果服务器检测确定了不存在与终端之间的数据传输连接,例如Websocket连接时,服务器便可以为该播放控制指令创建一个Websocket连接,或者称为Websocket会话。然后,服务器还可以为该Websocket会话创建一个控制线程,此处可以称为第二控制线程。
步骤270,服务器调用第二控制线程解析播放控制指令,得到第二初始帧信息和第二发送速率。
创建了第二控制线程后,服务器便可以调用第二控制线程生成与其对应的第二帧数据获取线程以及第二帧数据发送线程。然后服务器可以调用第二控制线程对播放控制指令进行解析,得到其中包含的第二初始帧信息和第二发送速率。
步骤280,服务器通过第二控制线程向第二帧数据获取线程发送第二初始帧信息,以使得第二帧数据获取线程根据第二初始帧信息进行帧数据获取并转存至阻塞队列。
服务器通过第二控制线程将第二初始帧信息发送给第二帧数据获取线程,以控制第二帧数据获取线程从帧数据来源出获取帧数据,并将获取到的帧数据转存到阻塞队列中。
在本申请实施例中,在第二帧数据获取线程持续从帧数据来源出逐帧获取帧数据并转存至阻塞队列中时,服务器可以实时对阻塞队列中的帧数据的数量进行检测。当检测到阻塞队列中的帧数据的数量达到预设数量后,服务器可以基于第二控制线程向第二帧数据获取线程发送暂停帧数据获取的指令以使得第二帧数据获取线程暂停当前的帧数据获取任务。
步骤290,服务器通过第二控制线程向第二帧数据发送线程发送第二发送速率,以使得第二帧数据发送线程根据第二发送速率从阻塞队列中提取帧数据并发送给终端。
服务器通过第二控制线程向第二帧数据获取线程发送第二初始帧信息的同时,可以向第二帧数据发送线程发送第二发送速率,使得第二帧数据发送线程根据第二发送速率从阻塞队列中提取帧数据并发送给终端。
如图4所示,为本申请提供的数据传输方法对应的系统架构示意图。如图所示,终端10通过与服务器20建立的Websocket会话向服务器20发送控制指令,服务器20中控制线程接收到该控制指令后对该控制指令进行解析,得到对帧数据获取线程和帧数据发送线程的线程控制指令,然后再由控制线程将线程控制指令分别分发到帧数据获取线程以及帧数据发送线程。然后,帧数据获取线程从帧数据来源处逐帧获取帧数据,并将获取到的帧数据转存到阻塞队列。然后,帧数据发送线程从阻塞队列中逐帧获取帧数据并通过Websocket会话发送给终端。
根据上述描述可知,本申请提供的数据传输方法,通过接收第一帧数据获取请求;运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
以此,本申请提供的数据传输方法,通过将数据传输线程划分为几个相互独立运行且互不干扰的数据传输进程,使得单线程的任务可以由多线程并发执行,从而可以大大提升数据传输的效率。
为了更好地实施以上方法,本申请实施例还提供一种数据传输装置,该数据传输装置可以集成在终端或服务器中。
例如,如图5所示,为本申请实施例提供的数据传输装置的结构示意图,该数据传输装置可以包括接收单元310、第一运行单元320、第二运行单元330以及第三运行单元340,如下:
接收单元310,用于接收第一帧数据获取请求;
第一运行单元320,用于运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
第二运行单元330,用于运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;
第三运行单元340,用于运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
在一些实施例中,第一运行子单元,包括:
第一获取子单元,用于响应第一帧数据获取请求,获取第一数据传输处理类;
第一运行子单元,用于根据第一帧数据获取请求中的参数对第一数据传输处理类进行入参,以运行第一数据传输线程;
解析子单元,用于基于第一数据处理线程解析第一帧数据获取请求,得到第一帧数据获取请求中包含的第一起始帧信息以及获取速率信息。
在一些实施例中,本申请提供的数据传输装置还包括:
第一生成单元,用于基于第一数据传输线程调用第二数据传输处理类以生成第二数据传输线程;
第二生成单元,用于基于第一数据传输线程调用第三数据传输处理类生成第三数据传输线程。
在一些实施例中,第一运行单元,包括:
第二运行子单元,用于当检测到当前运行的线程中存在与第一帧数据获取请求匹配的第一数据传输线程时,基于第一数据传输线程解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
第三运行子单元,用于当检测到当前运行的线程中不存在与第一帧数据获取请求匹配的第一数据传输线程时,运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息。
在一些实施例中,第二运行单元,包括:
检测子单元,用于对帧数据队列中的帧数据进行检测;
第二获取子单元,用于当检测到帧数据队列中存在帧数据时,获取帧数据队列中存入时间最晚的帧数据的目标帧信息;
第四运行子单元,用于当目标帧信息对应的帧数据为第一起始帧信息对应的帧数据的前一帧时,运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据。
在一些实施例中,本申请提供的数据传输装置还包括:
清空子单元,用于当目标帧信息对应的帧数据不为第一起始帧信息对应的帧数据的前一帧时,清空帧数据队列中的帧数据;
执行子单元,用于执行运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据的步骤。
在一些实施例中,本申请提供的数据传输装置,还包括:
检测单元,用于对帧数据队列中帧数据的数量进行实时检测;
触发单元,用于当帧数据队列中的帧数据数量达到预设数量时,触发第二数据传输线程暂停执行获取帧数据的任务。
在一些实施例中,本申请提供的数据传输装置,还包括:
解析单元,用于当在第二数据传输线程的运行过程中接收到第二帧数据获取请求时,基于第一数据传输线程解析第二帧数据获取请求,得到第二起始帧信息;
第三生成单元,用于基于第一数据传输线程生成与第二起始帧信息匹配的线程中断指令并将线程中断指令发送给第二数据传输线程,以中断第二数据传输线程当前执行的任务并重新从第二起始帧信息对应的帧数据开始逐帧进行帧数据获取。
在一些实施例中,本申请提供的数据传输装置还包括:
第四生成单元,用于当在第三数据传输线程的运行过程中接收到暂停帧数据获取的暂停指令时,基于第一数据传输线程生成帧数据暂停发送指令;
发送单元,用于基于第一数据传输线程向第三数据传输线程发送帧数据暂停发送指令以触发第三数据传输线程暂停执行发送帧数据的任务。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
根据上述描述可知,本申请实施例提供的数据传输装置,通过接收单元310接收第一帧数据获取请求;第一运行单元320运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;第二运行单元330运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;第三运行单元340运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
以此,本申请提供的数据传输方法,通过将数据传输线程划分为几个相互独立运行且互不干扰的数据传输进程,使得单线程的任务可以由多线程并发执行,从而可以大大提升数据传输的效率。
本申请实施例还提供一种计算机设备,该计算机设备可以为终端或服务器,如图6所示,为本申请提供的计算机设备的结构示意图。具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理单元410、一个或一个以上存储介质的存储单元420、电源模块430和输入模块440等部件。本领域技术人员可以理解,图6中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理单元410是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储单元420内的软件程序和/或模块,以及调用存储在存储单元420内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体管理。可选的,处理单元410可包括一个或多个处理核心;优选的,处理单元410可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理单元410中。
存储单元420可用于存储软件程序以及模块,处理单元410通过运行存储在存储单元420的软件程序以及模块,从而执行各种功能应用以及数据处理。存储单元420可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能以及网页访问等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储单元420可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储单元420还可以包括存储器控制器,以提供处理单元410对存储单元420的访问。
计算机设备还包括给各个部件供电的电源模块430,优选的,电源模块430可以通过电源管理系统与处理单元410逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源模块430还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入模块440,该输入模块440可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理单元410会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储单元420中,并由处理单元410来运行存储在存储单元420中的应用程序,从而实现各种功能,如下:
接收第一帧数据获取请求;运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
应当说明的是,本申请实施例提供的计算机设备与上文实施例中的方法属于同一构思,以上各个操作的具体实施可参见前面的实施例,在此不作赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本发明实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种方法中的步骤。例如,该指令可以执行如下步骤:
接收第一帧数据获取请求;运行第一数据传输线程以解析第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;运行第二数据传输线程以自第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;运行第三数据传输线程以获取速率信息对应的目标速率从帧数据队列逐帧提取帧数据,并将提取到的帧数据按目标速率逐帧发送给第一帧数据获取请求的发送方。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本发明实施例所提供的任一种方法中的步骤,因此,可以实现本发明实施例所提供的任一种方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
其中,根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在存储介质中。计算机设备的处理器从存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述数据传输方法中各种可选实现方式中提供的方法。
以上对本发明实施例所提供的数据传输方法、装置、计算机设备及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

Claims (14)

1.一种数据传输方法,其特征在于,所述方法包括:
接收第一帧数据获取请求;
运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;
运行第三数据传输线程以所述获取速率信息对应的目标速率从所述帧数据队列逐帧提取帧数据,并将提取到的帧数据按所述目标速率逐帧发送给所述第一帧数据获取请求的发送方。
2.根据权利要求1所述的方法,其特征在于,所述运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息,包括:
响应所述第一帧数据获取请求,获取第一数据传输处理类;
根据所述第一帧数据获取请求中的参数对所述第一数据传输处理类进行入参,以运行第一数据传输线程;
基于所述第一数据处理线程解析所述第一帧数据获取请求,得到所述第一帧数据获取请求中包含的第一起始帧信息以及获取速率信息。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
基于所述第一数据传输线程调用第二数据传输处理类以生成第二数据传输线程;
基于所述第一数据传输线程调用第三数据传输处理类生成第三数据传输线程。
4.根据权利要求1所述的方法,其特征在于,所述运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息,包括:
当检测到当前运行的线程中存在与所述第一帧数据获取请求匹配的第一数据传输线程时,基于所述第一数据传输线程解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
当检测到当前运行的线程中不存在与所述第一帧数据获取请求匹配的第一数据传输线程时,运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息。
5.根据权利要求1至4中任意一项所述的方法,其特征在于,所述运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,包括:
对帧数据队列中的帧数据进行检测;
当检测到所述帧数据队列中存在帧数据时,获取所述帧数据队列中存入时间距离当前时间最近的帧数据的目标帧信息;
当所述目标帧信息对应的帧数据为所述第一起始帧信息对应的帧数据的前一帧时,运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当所述目标帧信息对应的帧数据不为所述第一起始帧信息对应的帧数据的前一帧时,清空所述帧数据队列中的帧数据;
执行运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据的步骤。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述帧数据队列中帧数据的数量进行实时检测;
当所述帧数据队列中的帧数据数量达到预设数量时,触发所述第二数据传输线程暂停执行获取帧数据的任务。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当在所述第二数据传输线程的运行过程中接收到第二帧数据获取请求时,基于所述第一数据传输线程解析所述第二帧数据获取请求,得到第二起始帧信息;
基于所述第一数据传输线程生成与所述第二起始帧信息匹配的线程中断指令并将所述线程中断指令发送给所述第二数据传输线程,以中断所述第二数据传输线程当前执行的任务并重新从所述第二起始帧信息对应的帧数据开始逐帧进行帧数据获取。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当在所述第三数据传输线程的运行过程中接收到暂停帧数据获取的暂停指令时,基于所述第一数据传输线程生成帧数据暂停发送指令;
基于所述第一数据传输线程向所述第三数据传输线程发送所述帧数据暂停发送指令以触发所述第三数据传输线程暂停执行发送帧数据的任务。
10.一种数据传输装置,其特征在于,所述装置包括:
接收单元,用于接收第一帧数据获取请求;
第一运行单元,用于运行第一数据传输线程以解析所述第一帧数据获取请求,得到第一起始帧信息以及获取速率信息;
第二运行单元,用于运行第二数据传输线程以自所述第一起始帧信息对应的帧数据开始,从帧数据存储位置逐帧获取帧数据,并将获取到的帧数据逐帧存入帧数据队列;
第三运行单元,用于运行第三数据传输线程以所述获取速率信息对应的目标速率从所述帧数据队列逐帧提取帧数据,并将提取到的帧数据按所述目标速率逐帧发送给所述第一帧数据获取请求的发送方。
11.根据权利要求10所述的装置,其特征在于,所述第一运行单元,包括:
获取子单元,用于响应所述第一帧数据获取请求,获取第一数据传输处理类;
运行子单元,用于根据所述第一帧数据获取请求中的参数对所述第一数据传输处理类进行入参,以运行第一数据传输线程;
解析子单元,用于基于所述第一数据处理线程解析所述第一帧数据获取请求,得到所述第一帧数据获取请求中包含的第一起始帧信息以及获取速率信息。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至9中任一项所述的数据传输方法中的步骤。
13.一种计算机设备,其特征在于,包括存储器、处理器以及存储在所述存储器中并可以在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至9中任一项所述的数据传输方法中的步骤。
14.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1至9中任一项所述的数据传输方法中的步骤。
CN202210004736.0A 2022-01-05 2022-01-05 数据传输方法、装置、计算机可读存储介质及计算机设备 Active CN114338830B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210004736.0A CN114338830B (zh) 2022-01-05 2022-01-05 数据传输方法、装置、计算机可读存储介质及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210004736.0A CN114338830B (zh) 2022-01-05 2022-01-05 数据传输方法、装置、计算机可读存储介质及计算机设备

Publications (2)

Publication Number Publication Date
CN114338830A true CN114338830A (zh) 2022-04-12
CN114338830B CN114338830B (zh) 2024-02-27

Family

ID=81024326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210004736.0A Active CN114338830B (zh) 2022-01-05 2022-01-05 数据传输方法、装置、计算机可读存储介质及计算机设备

Country Status (1)

Country Link
CN (1) CN114338830B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741206A (zh) * 2022-06-09 2022-07-12 深圳华锐分布式技术股份有限公司 客户端数据回放处理方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019144458A1 (zh) * 2018-01-23 2019-08-01 平安科技(深圳)有限公司 数据传输处理方法、装置、设备及计算机可读存储介质
CN112866745A (zh) * 2020-12-31 2021-05-28 广州穗能通能源科技有限责任公司 流媒体视频数据处理方法、装置、计算机设备和存储介质
WO2021120374A1 (zh) * 2019-12-19 2021-06-24 厦门网宿有限公司 报文处理方法、处理单元及虚拟专用网络服务器
CN113457160A (zh) * 2021-07-15 2021-10-01 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN113709131A (zh) * 2021-08-22 2021-11-26 山东云海国创云计算装备产业创新中心有限公司 一种网络数据传输方法、装置、计算机设备及可读介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019144458A1 (zh) * 2018-01-23 2019-08-01 平安科技(深圳)有限公司 数据传输处理方法、装置、设备及计算机可读存储介质
WO2021120374A1 (zh) * 2019-12-19 2021-06-24 厦门网宿有限公司 报文处理方法、处理单元及虚拟专用网络服务器
CN112866745A (zh) * 2020-12-31 2021-05-28 广州穗能通能源科技有限责任公司 流媒体视频数据处理方法、装置、计算机设备和存储介质
CN113457160A (zh) * 2021-07-15 2021-10-01 腾讯科技(深圳)有限公司 数据处理方法、装置、电子设备及计算机可读存储介质
CN113709131A (zh) * 2021-08-22 2021-11-26 山东云海国创云计算装备产业创新中心有限公司 一种网络数据传输方法、装置、计算机设备及可读介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741206A (zh) * 2022-06-09 2022-07-12 深圳华锐分布式技术股份有限公司 客户端数据回放处理方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN114338830B (zh) 2024-02-27

Similar Documents

Publication Publication Date Title
CN112784989B (zh) 推理系统、推理方法、电子设备及计算机存储介质
CN108833950B (zh) 一种弹幕消息下发方法、服务器、系统和存储介质
US10693816B2 (en) Communication methods and systems, electronic devices, and computer clusters
CN111274019B (zh) 一种数据处理方法、装置及计算机可读存储介质
US10154072B2 (en) Intelligent streaming of media content
EP4013018A2 (en) Method for transmitting stream, streaming server and streaming system
WO2023083208A1 (zh) 云桌面系统处理方法、云桌面系统控制方法以及相关设备
CN109542642A (zh) 一种前端任务处理的方法及装置
KR102601576B1 (ko) 단계 지원 작업 흐름을 위한 방법 및 장치
WO2023029961A1 (zh) 任务执行方法、系统、电子设备及计算机存储介质
CN111338769B (zh) 一种数据处理方法、装置及计算机可读存储介质
CN114338830B (zh) 数据传输方法、装置、计算机可读存储介质及计算机设备
CN115955590A (zh) 视频处理方法、装置、计算机设备、介质
CN115473876A (zh) 实时流媒体数据的传输方法、装置、系统和存储介质
CN114143371A (zh) 投屏方法、装置、存储介质及电子设备
CN114679436B (zh) 一种会话管理方法、服务器及计算机可读存储介质
CN108989404B (zh) 一种弹幕消息下发方法、服务器、系统和存储介质
CN110913371A (zh) 车辆远程监控方法、装置、智能车、电子设备和存储介质
CN110448892B (zh) 基于增强现实的游戏实现方法及系统
CN115941876A (zh) 音视频会议实现方法、装置、存储介质及计算机设备
CN114416275A (zh) 一种实现多个管理客户端同步虚拟机状态的方法及系统
CN113996058B (zh) 信息处理方法、装置、电子设备和计算机可读存储介质
CN113765886B (zh) 多媒体播放方法、装置、存储介质及电子设备
CN114125502B (zh) 一种视频流管理方法及装置
CN112333787B (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40072973

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant