CN116527949A - 一种媒体流的转发方法和转发装置 - Google Patents
一种媒体流的转发方法和转发装置 Download PDFInfo
- Publication number
- CN116527949A CN116527949A CN202310334457.5A CN202310334457A CN116527949A CN 116527949 A CN116527949 A CN 116527949A CN 202310334457 A CN202310334457 A CN 202310334457A CN 116527949 A CN116527949 A CN 116527949A
- Authority
- CN
- China
- Prior art keywords
- push
- forwarded
- data
- address
- stream
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000001514 detection method Methods 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 abstract description 9
- 238000012360 testing method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 101000840469 Arabidopsis thaliana Isochorismate synthase 1, chloroplastic Proteins 0.000 description 1
- 101100256916 Caenorhabditis elegans sid-1 gene Proteins 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000012432 intermediate storage Methods 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/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/24—Monitoring of processes or resources, e.g. monitoring of server load, available bandwidth, upstream requests
-
- 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/47—End-user applications
- H04N21/488—Data services, e.g. news ticker
- H04N21/4882—Data services, e.g. news ticker for displaying messages, e.g. warnings, reminders
-
- 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
- H04N21/6437—Real-time Transport Protocol [RTP]
-
- 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/8455—Structuring of content, e.g. decomposing content into time segments involving pointers to the content, e.g. pointers to the I-frames of the video stream
-
- 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/85—Assembly of content; Generation of multimedia applications
- H04N21/858—Linking data to content, e.g. by linking an URL to a video object, by creating a hotspot
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种媒体流的转发方法和转发装置,涉及数据处理领域。本发明可以获取待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址等参数信息,从所述拉流地址获取待转发数据并发送至第一缓存通道;根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址;响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。通过根据用户输入的并发数量创建多个推流线程,各推流线程可以并行的将从一个拉流地址获取的待转发数据向各自对应的推流地址推送,从而实现了一路转多路的业务需求。
Description
技术领域
本发明涉及数据处理领域,尤其涉及一种媒体流的转发方法和转发装置。
背景技术
在测试或实际转发媒体流时,经常会遇见将获取到的一路媒体流转发到多个目的地服务器的情况(简称一路转多路),但是实际的摄像头为保证视频流的低延时及摄像头端不必要的资源消耗,往往对从摄像头处拉流的客户端有拉流路数限制,这就导致不满足一路转多路的业务需求。
发明内容
本发明提供了一种媒体流的转发方法和转发装置,以解决相关技术中的不足。
根据本发明实施例的第一方面,提供一种媒体流的转发方法,所述方法包括:
获取参数信息,所述参数信息包括待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址;
从所述拉流地址获取待转发数据并发送至第一缓存通道;
根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址;
响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。
在一些实施例中,所述从所述拉流地址获取待转发数据并发送至第一缓存通道,包括:
获取所述待转发媒体流的标识符与拉流句柄间的第一关联关系,所述第一关联关系是在首次获取到所述拉流地址的情况下创建的,所述拉流句柄用于标识从所述拉流地址获取待转发数据的拉流线程,所述标识符用于标识所述拉流地址处的待转发媒体流;
根据所述第一关联关系,调用与所述拉流句柄对应的拉流线程,从所述拉流地址获取待转发数据,并将所述待转发数据发送至与所述待转发媒体流的标识符对应的缓存队列,所述缓存队列是在首次获取到所述拉流地址的情况下,根据所述待转发媒体流的标识符在第一缓存通道中创建的。
在一些实施例中,所述方法还包括:
在检测到所述拉流地址被删除的情况下,根据所述第一关联关系获取与所述待转发媒体流的标识符对应的拉流句柄;
销毁与所述拉流句柄对应的拉流线程;
销毁与所述待转发媒体流的标识符对应的缓存队列。
在一些实施例中,所述响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,包括:
响应于检测到所述待转发媒体流的标识符所对应的缓存队列中存在待转发数据,调用读取线程获取所述缓存队列中的待转发数据;
获取所述待转发媒体流的标识符与多个推流句柄间的第二关联关系,所述第二关联关系是根据并发数量创建多个推流线程后创建的,所述推流句柄用于标识向推送地址推送待转发数据的推流线程,所述推流线程的数量由所述并发数量确定;
所述读取线程根据所述第二关联关系,将所述待转发数据分别推送至所有推流句柄对应的推流线程。
在一些实施例中,所述将所述待转发数据分别推送至所有推流句柄对应的推流线程,包括:
将所述待转发数据分别推送至所有推流句柄对应的第二缓存通道;
所述推流线程从对应的第二缓存通道中获取待转发数据。
在一些实施例中,所述方法还包括:
在检测到所述拉流地址被删除的情况下,销毁所述读取线程;
根据所述第二关联关系,获取与所述待转发媒体流的标识符对应的所有推流句柄;
销毁所有推流句柄对应的推流线程,以及各推流线程对应的第二缓存通道。
在一些实施例中,所述方法还包括:
在检测到所述推流地址被更新的情况下,获取与被更新的推流地址对应的目标推流线程;
停止所述目标推流线程,并为所述目标推流线程配置更新后的推流地址;
在更新推流地址后启动所述目标推流线程。
在一些实施例中,所述方法还包括:
根据从所述拉流地址获取的待转发数据的总帧数,确定拉流速度;
通过监控每一个推流线程的第二缓存通道,确定每一个推流线程的推流速度;
在用户界面上显示所述拉流速度以及每一个推流线程的推流速度。
根据本发明实施例的第二方面,提供一种媒体流的转发装置,所述装置包括:
获取单元,用于获取参数信息,所述参数信息包括待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址;
拉流管理单元,用于从所述拉流地址获取待转发数据并发送至第一缓存通道;
推流管理单元,用于根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址,响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。
根据上述实施例可知,本发明可以获取待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址等参数信息,从所述拉流地址获取待转发数据并发送至第一缓存通道;根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址;响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。通过根据用户输入的并发数量创建多个推流线程,各推流线程可以并行的将从一个拉流地址获取的待转发数据向各自对应的推流地址推送,从而实现了一路转多路的业务需求。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据本发明实施例示出的媒体流的转发方法流程图。
图2是根据本发明实施例示出的一种用户界面示意图。
图3是根据本发明实施例示出的另一种用户界面示意图。
图4是根据本发明实施例示出的读取线程分发待转发数据的示意图。
图5是根据本发明实施例示出的第一缓存通道或第二缓存通道的示意图。
图6是根据本发明实施例示出的一种媒体流的转发装置的示意图。
图7是根据本发明实施例示出的一种媒体流的转发装置的示意图。
图8是根据本发明实施例示出的业务流程图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在测试或实际转发媒体流时,由于摄像头侧的保护设置,不能实现一路转多路的业务需求。例如在有限资源(摄像头)的情况下,测试系统是否能以最大的负载,在局域网环境中(千兆网)稳定的运行,测试人员首先遇到的问题就是资源不足或者摄像头拉流路数限制的情况,如何借助仅有的摄像头实现可调节的并发数量以达到测试系统整体性能或稳定性的目的。
鉴于此,本发明提供了一种媒体流的转发方法,通过将拉取到的一路媒体流分别推送给多个推流线程,使各推流线程并行的向对应的推流地址推送,以此达到在资源有限或受限的情况下,提升资源的利用率。
在一些实施例中,可以将本发明提供的媒体流的转发方法进行封装,例如可以封装为应用程序(Application,APP)、软件开发工具包(Software Development Kit,SDK)和/或小程序等。封装时可以根据业务需求对推拉流协议进行适配,并对外提供接口,在应用时,业务层可以传入协议类型或地址即可在底层自动适配相关协议及通用的推拉流接口,从而实现媒体流转发。本实施例的转发方法可以支持多种协议,例如RTSP协议和RTMP协议等。本领域技术人员应当理解,除了上述RTSP协议和RTMP协议之外,还可以配置其他协议,本实施例对此不进行限制。
本发明提供的媒体流转发方法可以应用于测试场景和/或实际应用场景。所述实际应用场景指的是存在将摄像头采集的媒体流推送给多个服务器需求的场景,例如可以是待推送的服务器数量超过摄像头拉流路数限制的场景。所述测试场景可以包括用户直播中系统性能测试,各类媒体流系统测试等;实际应用场景可以包括春晚直播场景,直播转发代理场景等。
下述实施例将结合附图对本发明进行说明。
图1是根据本发明实施例示出的媒体流的转发方法流程图,如图1所示,媒体流的转发方法包括以下步骤101至步骤104。
在步骤101中,获取参数信息,所述参数信息包括待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址。
本实施例中的待转发媒体流可以是摄像头实时采集的直播流。
在检测到用户启动转发功能的情况下,可以显示如图2所示的用户界面,用户可以根据用户界面上的提示信息输入参数信息。通过用户界面,方便用户从平台侧进行管理,例如进行推拉流设置和推拉流地址及并发数量的更新。对于运行该转发方法的服务器而言,可以从用户界面上获取参数信息。
如图2所示,用户可以在拉流地址对应的输入框201中输入拉流地址;在并发数量对应的输入框202中输入并发数量,所述并发数量可以根据用户需求进行调整;在推流地址对应的输入框203中输入推流地址。
在一种实施方式中,可以提供扫码输入的方式,即预先将拉流地址和/或推流地址生成二维码,通过扫描二维码的方式添加拉流地址和/或推流地址,从而避免手动输入容易出错的问题。
在一示例中,除了输入并发数量的数值之外,还可以通过用户确定的推流地址的数量确定并发数量的数值。例如,推流地址的数量为20,则表明并发数量的数值为20。在该示例中,从用户界面获取的参数信息包括待转发媒体流的拉流地址以及推流地址,之后可以根据推流地址的数量确定所述待转发媒体流的并发数量。
在应用于测试场景的情况下,所述推流地址可以是一个或多个虚拟地址。在应用于实际场景的情况下,所述推流地址是指接收媒体流的服务器的地址。
在一种实施方式中,在接收到用户输入的拉流地址后,可以对所述拉流地址进行有效性检测,在通过有效性检测的情况下,执行后续处理;在未通过有效性检测的情况下,在用户界面上显示提示信息,用于提示用户检查拉流地址或提示正确的拉流地址格式等。
在步骤102中,从所述拉流地址获取待转发数据并发送至第一缓存通道。
为避免从所述拉流地址获取的待转发数据丢失,以及保证后续推流侧推送待转发数据的一致性,可以创建缓存通道,所述缓存通道用于缓存从拉流地址获取的待转发数据。
为了区分于后续提及的缓存通道,将用于缓存从拉流地址获取的待转发数据的缓存通道称为第一缓存通道。
在步骤103中,根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址。
所述并发数量可以指用户期望同步拉流的数量,由于拉流限制可以通过本实施例提供的转发方法实现一路转多路的业务需求。
本发明实施例可以根据用户输入的并发数量,创建等数量的推流线程。在测试场景下,可以为每个推流线程配置相同的推流地址;在实际应用场景中,可以为每个推流线程配置与其对应的目的地服务器的地址。
在步骤104中,响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。
在本实施例中,可以创建一个检测线程,用于检测所述第一缓存通道中是否存在待转发数据,在检测到所述第一缓存通道中存在待转发数据的情况下,可以获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,各推流线程向对应的推流地址推送所述待转发数据。
需要说明的是,本实施例中的第一缓存通道是一个中间存储区域,用于暂存拉流线程获取到的待转发数据,也就是说第一缓存通道通常位于数据接收和数据传输之间,用于处理网络抖动和丢包等问题。各推流线程是用于将待转发数据发送到与推流地址对应的服务器的线程,推流线程通常具备高效的处理能力和稳定的网络连接,以确保待转发数据能够快速地被发送到推流地址对应的服务器。另外推流线程还可以进行视频编码、转码和加密等操作,以便满足特定的业务需求和安全要求。第一缓存通道和推流线程都是实现媒体流转发方法的关键组件,彼此相互协作,以确保待转发数据能够高效地传输。
基于上述实施例可知,本发明可以从用户界面获取待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址等参数信息,从所述拉流地址获取待转发数据并发送至第一缓存通道;根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址;响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。通过根据用户输入的并发数量创建多个推流线程,各推流线程可以并行的将从一个拉流地址获取的待转发数据向各自对应的推流地址推送。通过本发明可以在摄像头数量有限的情况下,实现一路流转为多路流的业务需求,不仅可以提升资源利用率而且可以节约成本。
本领域技术人员应当理解,用户可以输入多个拉流地址,本发明可以从所述多个拉流地址处分别获取待转发数据,由于处理过程类似,本实施例以其中一个为例进行说明。
本实施例可以为每个拉流地址创建对应的拉流线程,以保证拉流效率。一个拉流地址对应一个待转发媒体流,一个待转发媒体流对应一个标识符,例如所述标识符可以是待转发媒体流的ID。所述拉流线程可以采用拉流句柄进行标识。
为了便于管理,本实施例可以在首次获取到拉流地址的情况下,创建拉流地址所对应的待转发媒体流的标识符与拉流句柄之间的关联关系,并在首次获取到所述拉流地址的情况下,根据所述待转发媒体流的标识符在第一缓存通道中创建缓存队列,所述缓存队列可以用于缓存该待转发媒体流对应的待转发数据。例如,拉流地址1对应待转发媒体流1,在首次获取到拉流地址1的情况下,创建用于从拉流地址1处获取待转发数据的拉流线程1,构建待转发媒体流1的标识符与拉流线程1的句柄之间的关联关系,并创建用于缓存待转发媒体流1中待转发数据的缓存队列1;拉流地址2对应待转发媒体流2,在首次获取到拉流地址2的情况下,与处理拉流地址1的过程类似,创建拉流线程2以及缓存队列2,并创建待转发媒体流2的标识符与拉流线程2的句柄之间的关联关系。后续可以根据关联关系定位到拉流线程,并根据用户指示控制拉流线程的启停。
本实施例中为了区别于后续提及的关联关系,将待转发媒体流与拉流线程的关联关系称为第一关联关系。
在一些实施例中,所述从所述拉流地址获取待转发数据并发送至第一缓存通道,可以包括:获取所述待转发媒体流的标识符与拉流句柄间的第一关联关系,根据所述第一关联关系,调用与所述拉流句柄对应的拉流线程,从所述拉流地址获取待转发数据,并将所述待转发数据发送至与所述待转发媒体流的标识符对应的缓存队列。
在本实施例中,所述缓存队列的存储空间可以随存储数据的大小进行适度扩展,以防止数据帧丢失。
本实施例中的第一缓存通道具备按媒体流隔离的能力,可以按待转发媒体流ID创建缓存队列,后续以待转发媒体流ID存储待转发数据,并以待转发媒体流ID读取待转发数据。
在一种实施方式中,创建拉流线程后,可以对拉流线程进行流媒体协议适配。在获取待转发数据时,可以对获取到的待转发数据以预设规则进行封包处理,所述预设规则中可以包括待转发数据的帧序号,帧原始数据,以及接收到帧的时间戳。其中,帧序号可以用于统计总帧数,接收到帧的时间戳可以用于后续计算延时。
用户可以通过用户界面上的提示信息增加拉流地址,也可以通过提示信息删除拉流地址,在一些实施例中,在检测到所述拉流地址被删除的情况下,可以根据所述第一关联关系获取与所述待转发媒体流的标识符对应的拉流句柄;销毁与所述拉流句柄对应的拉流线程;销毁与所述待转发媒体流的标识符对应的缓存队列。
示例的,用户可以通过点击“删除”控件,跳转到图3所示的用户界面,在输入框301中输入待删除的拉流地址并点击“确认”,在用户执行上述操作后,对于运行该方法的服务器而言,可以检测到拉流地址被删除。
本领域技术人员应当理解的是,除了上述删除拉流地址的方式之外,还可以在用户界面上显示所有的拉流地址,并在拉流地址所在的位置显示删除控件,响应于检测到用户触发删除控件,则可以认为检测到所述拉流地址被删除,本实施例并不限定具体实现方式。
在检测到拉流地址被删除的情况下,为了提高存储空间的利用率,可以销毁从所述拉流地址获取待转发数据的拉流线程,以及用于存储待转发媒体流的缓存队列,并删除第一关联关系。
在实际应用中,拉流侧可以通过检测拉流地址的状态来管理拉流线程,在检测到用户输入拉流地址的情况下,创建拉流线程,将拉流线程的拉流句柄与拉流地址对应的待转发媒体流的标识符建立第一关联关系;在检测到所述拉流地址被删除的情况下,根据第一关联关系,获取到与所述拉流地址的待转发媒体流对应的拉流句柄,销毁所述拉流句柄对应的拉流线程,从而实现拉流侧的管理。
上述实施例结合附图对拉流侧的处理过程进行了说明,下述实施例将结合附图对推流侧的处理过程进行说明。
对于推流侧而言,在接收到用户在用户界面上输入的并发数量和推送地址后,可以根据并发数量创建多个推流线程,并为每个推流线程配置推流地址。由于一个推流地址的待转发媒体流可以对应多个推流线程,为了便于管理,可以在根据并发数量创建多个推流线程后可以创建的第二关联关系,所述第二关联关系是指待转发媒体流的标识符与多个推流句柄间的关联关系。其中,所述推流句柄用于标识向推送地址推送待转发数据的推流线程,所述推流线程的数量由所述并发数量确定。也就是说,所述推流线程的数量可以根据并发数量的变化而变化,推流线程数量的变化会导致第二关联关系发生变化,也即是第二关联关系将根据并发数量的变化同步进行动态调整,例如检测到用户将并发数量从300修改为500,则推流线程的数量也将由300增加至500。
在本实施例中,为适应一路转多路流的业务,可以创建一个线程对并发数量进行检测(原子操作),依据检测的结果对推流线程的数量以及第二关联关系进行管理(新增或销毁),从而最大限度的利用现有资源模拟出用户业务需求的最大资源。通过检测并发数量可以使用户的修改实现即改即生效的效果,提升处理效率。
在一种实施方式中,所述第一关联关系和所述第二关联关系可以通过字典结构实现,例如如下表所示,在第一关关联关系中可以将待转发媒体流的标识符作为键key,将拉流句柄作为值value;在第二关关联关系中可以将待转发媒体流的标识符作为键key,将推流句柄作为值value。表中Sid表示待转发媒体流的标识符。
Sid1:拉流句柄或推流句柄 |
Sid2:拉流句柄或推流句柄 |
… |
SidN:拉流句柄或推流句柄 |
在本实施例中,利用字典结构存储的待转发媒体流ID及推拉流句柄,不分先后顺序,有利于进行查询。
在本实施例中,创建推流线程后可以依据待转发媒体流的类型和推送地址,初始化推流线程。
在一些实施例中,响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,可以包括:响应于检测到所述待转发媒体流的标识符所对应的缓存队列中存在待转发数据,调用读取线程获取所述缓存队列中的待转发数据;所述读取线程根据第二关联关系,将所述待转发数据分别推送至所有推流句柄对应的推流线程。
本实施例可以为每个缓存队列分别创建一个读取线程,在检测到待转发媒体流的缓存队列中存在待转发数据的情况下,可以调用读取线程获取所述缓存队列中的待转发数据,并根据第二关联关系,将所述待转发数据分别推送至所有推流句柄对应的推流线程。
图4是根据本发明实施例示出的读取线程分发待转发数据的示意图,如图4所示,读取线程从缓存队列A1中获取待转发数据,并将待转发数据分别推送至所有的推流线程B。在图4中,第一缓存通道中可以包括N缓存队列A,N为正整数,N根据待转发媒体流的数量确定;n也为正整数,是指推流线程B的数量,n根据用户输入的并发数量确定。
在一种实施方式中,采用字典结构实现第二关联关系的情况下,当字典大于0时,说明并发数量大于0,读取线程每次从缓存队列中获取到待转发数据后就要遍历该字典,将所述待转发数据分别推送至字典中与待转发媒体流对应的所有推流线程。
在一些实施例中,考虑到推送线程在推送数据的过程中会受到各种因素的影响,例如网络质量不佳等,为了避免数据丢失,以及读取线程写入数据的时效性,可以为每个推流线程创建第二缓存通道。在这种情况下,所述将所述待转发数据分别推送至所有推流句柄对应的推流线程,可以包括:将所述待转发数据分别推送至所有推流句柄对应的第二缓存通道;所述推流线程从对应的第二缓存通道中获取待转发数据。
在本实施例中,对于推流侧而言,在检测到拉流地址被删除的情况下,可以销毁所述读取线程;根据所述第二关联关系,获取与所述待转发媒体流的标识符对应的所有推流句柄;销毁所有推流句柄对应的推流线程,以及各推流线程对应的第二缓存通道。
也就是说,在检测到拉流地址被删除的情况下,可以回收为该拉流地址创建的各资源,例如读取线程、推流线程,第二缓存通道等。
图5是根据本发明实施例示出的第一缓存通道或第二缓存通道的示意图,如图5所示,在一种实施方式中,第一缓存通道和第二缓存通道可以根据数据包的数量在一定范围内扩展,保证资源在合理的范围内伸缩。在图5中Packet可以表示待转发数据生成的数据包,M为正整数,表示数据包的个数。在本实施例中,可以分别设置第一缓存通道和第二缓存通道的长度上线,以防止内存被耗尽,从而影响整个系统的可用性。
在一些实施例中,用户可以在用户界面上修改推送地址,在这种情况下,所述方法还可以包括:在检测到所述推流地址被更新的情况下,获取与被更新的推流地址对应的目标推流线程;停止所述目标推流线程,并为所述目标推流线程配置更新后的推流地址;在更新推流地址后启动所述目标推流线程。
在用户更新推送地址后,将导致目标推送线程无法向更新前的推送地址推送数据,因此,在检测到用户更新推送地址的情况下,停止所述目标推送线程,根据更新后的推送地址重新配置目标推送线程后,启动所述目标推流线程。
通过上述实施例可以看出,在用户增加拉流地址的情况下,拉流侧可以创建拉流线程以及缓存队列,推流侧可以创建读取线程,并根据并发数量创建等数量的推流线程,从而实现一路转多路的业务需求。在用户删除拉流地址的情况下,拉流侧可以销毁拉流线程以及缓存队列,推流侧可以销毁读取线程以及各推流线程,以回收资源。推流侧还可以根据用户对并发数量的调整,创建或销毁推流线程,并通过字典结构管理与待转发媒体流对应的推流线程。
在一些实施例中,为了便于用户观察运行转发方法时的性能,所述方法还包括:根据从所述拉流地址获取的待转发数据的总帧数,确定拉流速度;通过监控每一个推流线程的第二缓存通道,确定每一个推流线程的推流速度;在所述用户界面上显示所述拉流速度以及每一个推流线程的推流速度。
除了拉流速度、推流速度之外,本实施例还可以获取拉流总路数,成功拉流的数量,每一路待转发媒体流对应的缓存队列的缓存长度,每一路待转发媒体流对应的并发数量,以及每个推流线程的延迟等,为用户下一步决策提供数据支撑。
在一种实施方式中,每个推流线程可以根据不同的业务需求对待转发数据进行处理,并向推流地址对应的服务器推送处理结果,从而满足不同终端服务器的需求。例如,可以预先将不同的算法封装为应用程序编程接口(Application Programming Interface,API),各推流线程通过调用算法API,实现不同的处理,例如人体识别、人脸识别、客流量统计等。
基于同一发明构思,本发明还提供了一种媒体流的转发装置。图6是根据本发明实施例示出的一种媒体流的转发装置的示意图,如图6所示,所述装置包括:
获取单元601,用于获取参数信息,所述参数信息包括待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址;
拉流管理单元602,用于从所述拉流地址获取待转发数据并发送至第一缓存通道;
推流管理单元603,用于根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址,响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。
在一些实施例中,所述拉流管理单元602,具体用于:
获取所述待转发媒体流的标识符与拉流句柄间的第一关联关系,所述第一关联关系是在首次获取到所述拉流地址的情况下创建的,所述拉流句柄用于标识从所述拉流地址获取待转发数据的拉流线程,所述标识符用于标识所述拉流地址处的待转发媒体流;
根据所述第一关联关系,调用与所述拉流句柄对应的拉流线程,从所述拉流地址获取待转发数据,并将所述待转发数据发送至与所述待转发媒体流的标识符对应的缓存队列,所述缓存队列是在首次获取到所述拉流地址的情况下,根据所述待转发媒体流的标识符在第一缓存通道中创建的。
在一些实施例中,所述拉流管理单元602,还用于:在检测到所述拉流地址被删除的情况下,根据所述第一关联关系获取与所述待转发媒体流的标识符对应的拉流句柄;销毁与所述拉流句柄对应的拉流线程;销毁与所述待转发媒体流的标识符对应的缓存队列。
在一些实施例中,所述推流管理单元603,具体用于:响应于检测到所述待转发媒体流的标识符所对应的缓存队列中存在待转发数据,调用读取线程获取所述缓存队列中的待转发数据;获取所述待转发媒体流的标识符与多个推流句柄间的第二关联关系,所述第二关联关系是根据并发数量创建多个推流线程后创建的,所述推流句柄用于标识向推送地址推送待转发数据的推流线程,所述推流线程的数量由所述并发数量确定;所述读取线程根据所述第二关联关系,将所述待转发数据分别推送至所有推流句柄对应的推流线程。
在一些实施例中,所述推流管理单元603,具体用于:将所述待转发数据分别推送至所有推流句柄对应的第二缓存通道;所述推流线程从对应的第二缓存通道中获取待转发数据。
在一些实施例中,所述推流管理单元603,还用于:在检测到所述拉流地址被删除的情况下,销毁所述读取线程;根据所述第二关联关系,获取与所述待转发媒体流的标识符对应的所有推流句柄;销毁所有推流句柄对应的推流线程,以及各推流线程对应的第二缓存通道。
在一些实施例中,所述装置还包括推流地址更新单元;所述推流地址更新单元用于:在检测到所述推流地址被更新的情况下,获取与被更新的推流地址对应的目标推流线程;停止所述目标推流线程,并为所述目标推流线程配置更新后的推流地址;在更新推流地址后启动所述目标推流线程。
在一些实施例中,所述装置还包括统计单元,所述统计单元用于:
统计单元,用于根据从所述拉流地址获取的待转发数据的总帧数,确定拉流速度;通过监控每一个推流线程的第二缓存通道,确定每一个推流线程的推流速度;在用户界面上显示所述拉流速度以及每一个推流线程的推流速度。
在本实施例中为了更好的理解本发明,结合图7和图8从整体上对本发明进行说明。
图7是根据本发明实施例示出的一种媒体流的转发装置的示意图,如图7所示,拉流管理单元可以创建拉流线程,并根据流媒体协议初始化拉流线程,完成初始化的拉流线程可以从拉流地址拉取一路实时直播流。
推流管理单元可以根据并发数量创建多个推流线程,并通过字典结构管理与待转发媒体流对应的所有推流线程,在检测到第一缓存通道中包括待转发数据的情况下,调用读取线程获取待转发数据,并分别推送至与待转发媒体流对应的所有推流线程,各推流线程向对应的推流地址所在服务器推送待转发数据。
图8是根据本发明实施例示出的业务流程图,如图8所示,用户可以通过用户界面添加拉流地址,拉流管理单元在接收到拉流地址后保存所述拉流地址对应的待转发媒体流ID,并向第一缓存通道的通知服务发送增加待转发媒体流ID的通知,通知服务在接收到增加待转发媒体流ID的通知的情况下,使第一缓存通道为待转发媒体流ID创建缓存队列。
拉流管理单元创建拉流线程,将待转发媒体流ID作为键,将拉流句柄作为值进行存储。拉流线程从所述拉流地址进行拉流并获取到的待转发数据进行封包后发送至待转发媒体流ID对应的缓存队列。
推流管理单元监听通知服务,在监听到增加待转发媒体流ID的通知的情况下,根据用户输入的并发数量创建对应的推流线程,并将检测待转发媒体流ID作为键,将推流句柄作为值进行关联存储。检测待转发媒体流ID对应的缓存队列中是否存在待转发数据,在检测到存在待转发数据的情况下,调用读取线程获取待转发数据,并将待转发数据分别推送至与待转发媒体流ID对应的所有推流线程。
在推流管理单元接收到用户修改并发数量的情况下,根据修改后的并发数量动态调整与待转发媒体流ID对应的推流线程。
拉流管理单元在接收到删除拉流地址的情况下,销毁所述拉流地址对应的待转发媒体流的ID,以及销毁拉流线程,并向第一缓存通道的通知服务发送删除待转发媒体流ID的通知。
通知服务在接收到增加待转发媒体流ID的通知的情况下,使第一缓存通道销毁为待转发媒体流ID创建的缓存队列。
在推流管理单元监听到删除待转发媒体流ID的通知的情况下,销毁读取线程以及与待转发媒体流ID对应的所有推流线程。
本实施例中还包括统计单元,用于通过实时数据统计,例如总帧数、拉流数、拉流速度、并发数量、推流延时、推流速度、第一缓存通道中各缓存队列的长度等,观察运行情况,满足用户的实际使用体验及评估测试对象的压力和性能情况。
通过上述实施例可以提高资源的利用率,达到测试或者用户业务场景需求的目的。
本实施例中还可以包括上述显示屏的显示装置,本实施例中的显示装置可以为:电子纸、手机、平板电脑、电视机、笔记本电脑、数码相框、导航仪等任何具有显示功能的产品或部件。
需要指出的是,在附图中,为了图示的清晰可能夸大了层和区域的尺寸。而且可以理解,当元件或层被称为在另一元件或层“上”时,它可以直接在其他元件上,或者可以存在中间的层。另外,可以理解,当元件或层被称为在另一元件或层“下”时,它可以直接在其他元件下,或者可以存在一个以上的中间的层或元件。另外,还可以理解,当层或元件被称为在两层或两个元件“之间”时,它可以为两层或两个元件之间唯一的层,或还可以存在一个以上的中间层或元件。通篇相似的参考标记指示相似的元件。
在本发明中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。术语“多个”指两个或两个以上,除非另有明确的限定。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (16)
1.一种媒体流的转发方法,其特征在于,所述方法包括:
获取参数信息,所述参数信息包括待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址;
从所述拉流地址获取待转发数据并发送至第一缓存通道;
根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址;
响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。
2.根据权利要求1所述的方法,其特征在于,所述从所述拉流地址获取待转发数据并发送至第一缓存通道,包括:
获取所述待转发媒体流的标识符与拉流句柄间的第一关联关系,所述第一关联关系是在首次获取到所述拉流地址的情况下创建的,所述拉流句柄用于标识从所述拉流地址获取待转发数据的拉流线程,所述标识符用于标识所述拉流地址处的待转发媒体流;
根据所述第一关联关系,调用与所述拉流句柄对应的拉流线程,从所述拉流地址获取待转发数据,并将所述待转发数据发送至与所述待转发媒体流的标识符对应的缓存队列,所述缓存队列是在首次获取到所述拉流地址的情况下,根据所述待转发媒体流的标识符在第一缓存通道中创建的。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在检测到所述拉流地址被删除的情况下,根据所述第一关联关系获取与所述待转发媒体流的标识符对应的拉流句柄;
销毁与所述拉流句柄对应的拉流线程;
销毁与所述待转发媒体流的标识符对应的缓存队列。
4.根据权利要求2所述的方法,其特征在于,所述响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,包括:
响应于检测到所述待转发媒体流的标识符所对应的缓存队列中存在待转发数据,调用读取线程获取所述缓存队列中的待转发数据;
获取所述待转发媒体流的标识符与多个推流句柄间的第二关联关系,所述第二关联关系是根据并发数量创建多个推流线程后创建的,所述推流句柄用于标识向推送地址推送待转发数据的推流线程,所述推流线程的数量由所述并发数量确定;
所述读取线程根据所述第二关联关系,将所述待转发数据分别推送至所有推流句柄对应的推流线程。
5.根据权利要求4所述的方法,其特征在于,所述将所述待转发数据分别推送至所有推流句柄对应的推流线程,包括:
将所述待转发数据分别推送至所有推流句柄对应的第二缓存通道;
所述推流线程从对应的第二缓存通道中获取待转发数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在检测到所述拉流地址被删除的情况下,销毁所述读取线程;
根据所述第二关联关系,获取与所述待转发媒体流的标识符对应的所有推流句柄;
销毁所有推流句柄对应的推流线程,以及各推流线程对应的第二缓存通道。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检测到所述推流地址被更新的情况下,获取与被更新的推流地址对应的目标推流线程;
停止所述目标推流线程,并为所述目标推流线程配置更新后的推流地址;
在更新推流地址后启动所述目标推流线程。
8.根据权利要求1至7中任一项所述的方法,其特征在于,所述方法还包括:
根据从所述拉流地址获取的待转发数据的总帧数,确定拉流速度;
通过监控每一个推流线程的第二缓存通道,确定每一个推流线程的推流速度;
在用户界面上显示所述拉流速度以及每一个推流线程的推流速度。
9.一种媒体流的转发装置,其特征在于,所述装置包括:
获取单元,用于获取参数信息,所述参数信息包括待转发媒体流的拉流地址,以及所述待转发媒体流的并发数量和推流地址;
拉流管理单元,用于从所述拉流地址获取待转发数据并发送至第一缓存通道;
推流管理单元,用于根据所述并发数量创建多个推流线程,并为每个推流线程配置推流地址,响应于检测到所述第一缓存通道中存在待转发数据,获取所述第一缓存通道中的待转发数据并分别推送至各推流线程,使所述推流线程向对应的推流地址推送所述待转发数据。
10.根据权利要求9所述的装置,其特征在于,所述拉流管理单元,具体用于:
获取所述待转发媒体流的标识符与拉流句柄间的第一关联关系,所述第一关联关系是在首次获取到所述拉流地址的情况下创建的,所述拉流句柄用于标识从所述拉流地址获取待转发数据的拉流线程,所述标识符用于标识所述拉流地址处的待转发媒体流;
根据所述第一关联关系,调用与所述拉流句柄对应的拉流线程,从所述拉流地址获取待转发数据,并将所述待转发数据发送至与所述待转发媒体流的标识符对应的缓存队列,所述缓存队列是在首次获取到所述拉流地址的情况下,根据所述待转发媒体流的标识符在第一缓存通道中创建的。
11.根据权利要求10所述的装置,其特征在于,所述拉流管理单元,还用于:
在检测到所述拉流地址被删除的情况下,根据所述第一关联关系获取与所述待转发媒体流的标识符对应的拉流句柄;
销毁与所述拉流句柄对应的拉流线程;
销毁与所述待转发媒体流的标识符对应的缓存队列。
12.根据权利要求10所述的装置,其特征在于,所述推流管理单元,具体用于:
响应于检测到所述待转发媒体流的标识符所对应的缓存队列中存在待转发数据,调用读取线程获取所述缓存队列中的待转发数据;
获取所述待转发媒体流的标识符与多个推流句柄间的第二关联关系,所述第二关联关系是根据并发数量创建多个推流线程后创建的,所述推流句柄用于标识向推送地址推送待转发数据的推流线程,所述推流线程的数量由所述并发数量确定;
所述读取线程根据所述第二关联关系,将所述待转发数据分别推送至所有推流句柄对应的推流线程。
13.根据权利要求12所述的装置,其特征在于,所述推流管理单元,具体用于:
将所述待转发数据分别推送至所有推流句柄对应的第二缓存通道;
所述推流线程从对应的第二缓存通道中获取待转发数据。
14.根据权利要求13所述的装置,其特征在于,所述推流管理单元,还用于:
在检测到所述拉流地址被删除的情况下,销毁所述读取线程;
根据所述第二关联关系,获取与所述待转发媒体流的标识符对应的所有推流句柄;
销毁所有推流句柄对应的推流线程,以及各推流线程对应的第二缓存通道。
15.根据权利要求9所述的装置,其特征在于,所述装置还包括推流地址更新单元;所述推流地址更新单元用于:
在检测到所述推流地址被更新的情况下,获取与被更新的推流地址对应的目标推流线程;
停止所述目标推流线程,并为所述目标推流线程配置更新后的推流地址;
在更新推流地址后启动所述目标推流线程。
16.根据权利要求9至15中任一项所述的装置,其特征在于,所述装置还包括统计单元,所述统计单元用于:
统计单元,用于根据从所述拉流地址获取的待转发数据的总帧数,确定拉流速度;
通过监控每一个推流线程的第二缓存通道,确定每一个推流线程的推流速度;
在用户界面上显示所述拉流速度以及每一个推流线程的推流速度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310334457.5A CN116527949A (zh) | 2023-03-30 | 2023-03-30 | 一种媒体流的转发方法和转发装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310334457.5A CN116527949A (zh) | 2023-03-30 | 2023-03-30 | 一种媒体流的转发方法和转发装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116527949A true CN116527949A (zh) | 2023-08-01 |
Family
ID=87407334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310334457.5A Pending CN116527949A (zh) | 2023-03-30 | 2023-03-30 | 一种媒体流的转发方法和转发装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116527949A (zh) |
-
2023
- 2023-03-30 CN CN202310334457.5A patent/CN116527949A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113423018B (zh) | 一种游戏数据处理方法、装置及存储介质 | |
US8370196B2 (en) | Multimedia advertising service through a mobile communication network and multimedia content controlling apparatus and method of a mobile terminal supporting said service | |
CN106803974B (zh) | 直播视频流实时转发方法 | |
US10063606B2 (en) | Systems and methods for using client-side video buffer occupancy for enhanced quality of experience in a communication network | |
US11228764B2 (en) | Streaming multiple encodings encoded using different encoding parameters | |
US9479807B1 (en) | Gateway-based video client-proxy sub-system for managed delivery of A/V content using fragmented method in a stateful system | |
CN106162235A (zh) | 用于切换视频流的方法和装置 | |
JP2003044384A (ja) | データ配信方法およびシステム | |
KR20070085173A (ko) | 푸시 컨텐츠의 전달 및 프로세싱을 용이하게 하는 장치 및그 연관 방법 | |
WO2014169828A1 (zh) | 一种监控视频播放的方法及设备、系统 | |
CN109495761A (zh) | 视频切换方法及装置 | |
US11089076B1 (en) | Automated detection of capacity for video streaming origin server | |
JP2007505580A (ja) | シンクライアントにおいてグラフィカルおよびメディア表示を生成するための方法および装置 | |
US11025352B2 (en) | Reception device, transmission device, and data processing method | |
US20170317773A1 (en) | Reception device, transmission device, and data processing method | |
CN109413138B (zh) | 文件上传方法和装置 | |
WO2023131269A1 (zh) | 监视屏幕设备播放的方法及系统、存储介质 | |
CN110445723A (zh) | 一种网络数据调度方法及边缘节点 | |
US11397616B2 (en) | Systems and methods for collecting and sending real-time data | |
CN108696505A (zh) | 视频分发设备、视频接收设备、视频分发方法和记录介质 | |
CN104639501B (zh) | 一种数据流传输的方法、设备及系统 | |
US7769035B1 (en) | Facilitating a channel change between multiple multimedia data streams | |
CN104904170B (zh) | 有效地对用于低带宽传送的视频流中的要素进行优先化的方法和装置 | |
KR20140051498A (ko) | 동적인 네트워크 환경에서 멀티미디어 데이터 특징 정보를 송수신하는 장치 및 방법 | |
CN110602555B (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 |