CN116074553B - 视频流传输方法、装置、电子设备及存储介质 - Google Patents
视频流传输方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116074553B CN116074553B CN202310042919.6A CN202310042919A CN116074553B CN 116074553 B CN116074553 B CN 116074553B CN 202310042919 A CN202310042919 A CN 202310042919A CN 116074553 B CN116074553 B CN 116074553B
- Authority
- CN
- China
- Prior art keywords
- ssrc
- cache
- ssrcs
- video
- generating
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 230000005540 biological transmission Effects 0.000 title abstract description 16
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000012545 processing Methods 0.000 claims description 35
- 238000004590 computer program Methods 0.000 claims description 15
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001360 synchronised 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/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/239—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests
- H04N21/2393—Interfacing the upstream path of the transmission network, e.g. prioritizing client content requests involving handling client 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/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/23406—Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving management of server-side video buffer
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本申请实施例公开一种视频流传输方法、装置、电子设备及存储介质,该方法包括:预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;响应于接收到视频接入请求,执行加锁操作;确定所述缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于所述缓存中,M为正整数;将所述缓存中的第一SSRC分配给所述视频接入请求,其中,所述第一SSRC为当前未被占用的SSRC;删除所述缓存中所述第一SSRC,并记录所述第一SSRC为被占用状态;执行释放锁操作,并指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种视频流传输方法、装置、电子设备及存储介质。
背景技术
近年来,从专业领域到民用、家用领域,视频监控不断普及,需求不断扩大,一个成规模的视频平台往往会接入海量的视频流。当视频平台的流媒体服务器对接的视频流数量较大,或者在大批量视频流为了应对容灾而迁移时,如何应对海量的视频接入请求,将其迅速地接入视频平台的流媒体服务器,以尽可能减少视频流数据的丢失是一个重要课题。
视频同步源(Synchronization source,SSRC)是实时传输协议(Real-timeTransport Protocol,RTP)报文头中定义的一个32位字段,用来唯一标识一路流。在视频接入过程中,需要为每一路视频流分配一个SSRC,并下发给视频平台的流媒体服务器,通知该流媒体服务器以该SSRC收流,而后系统会再调用信令服务,来通知摄像头以该SSRC推流。现有技术中,为了确保SSRC能够正确生成以避免串流,在每接收到一个视频接入请求,首先会加锁,之后为该视频接入请求实时生成一个SSRC,再下发给流媒体服务器,在接收到流媒体服务器的正确返回后将该SSRC标记为已使用,完成上述操作后才可以释放锁。
现有技术虽然可以在一定程度上实现视频流的传输,但也存在一些问题,例如,锁的粒度较大,导致在高并发的视频接入请求场景下,锁竞争时间较长,容易出现视频流接入时间过长,甚至接口超时的问题,视频流传输效率较低。
发明内容
本申请实施例提供一种视频流传输方法、装置、电子设备及存储介质,以实现能够应对高并发量的视频接入请求,提高视频流的接入速度,从而提高视频传输效率。
根据本申请的第一方面,公开了一种视频流传输方法,所述方法包括:
预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;
响应于接收到视频接入请求,执行加锁操作;
确定所述缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于所述缓存中,M为正整数;
将所述缓存中的第一SSRC分配给所述视频接入请求,其中,所述第一SSRC为当前未被占用的SSRC;
删除所述缓存中所述第一SSRC,并记录所述第一SSRC为被占用状态;
执行释放锁操作,并指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流。
可选地,作为一个实施例,所述指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流之后,还包括:
在所述流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流失败的情况下,将所述第一SSRC由被占用状态修改为未被占用状态。
可选地,作为一个实施例,所述执行生成SSRC的操作,包括:
以目标概率值生成一批SSRC,其中,所述目标概率值与所述i负相关。
可选地,作为一个实施例,所述以目标概率值生成一批SSRC,包括:
以所述目标概率值生成(N-i)个随机SSRC;
所述将所生成的SSRC存储于所述缓存中,包括:
将所生成的所述(N-i)个SSRC中当前未被占用的第二SSRC存储于所述缓存中。
可选地,作为一个实施例,所述以所述目标概率值生成(N-i)个随机SSRC,包括:
生成随机值p,其中,所述p的取值介于0至1之间;
确定(i/N)是否小于所述p,若所述(i/N)小于所述p,则生成(N-i)个随机SSRC。
可选地,作为一个实施例,所述执行生成SSRC的操作,包括:
生成(N-i)个当前未被占用的SSRC。
可选地,作为一个实施例,所述视频流传输方法应用于分布式部署场景;所述缓存为redis缓存,所述加锁操作所使用的锁为redis分布式锁,通过数据库记录所述第一SSRC为被占用状态。
根据本申请的第二方面,公开了一种视频流传输装置,所述装置包括:
预处理模块,用于预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;
第一处理模块,用于响应于接收到视频接入请求,执行加锁操作;
第二处理模块,用于确定所述缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于所述缓存中,M为正整数;
第三处理模块,用于将所述缓存中的第一SSRC分配给所述视频接入请求,其中,所述第一SSRC为当前未被占用的SSRC;
第四处理模块,用于删除所述缓存中所述第一SSRC,并记录所述第一SSRC为被占用状态;
第五处理模块,用于执行释放锁操作,并指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流。
可选地,作为一个实施例,所述装置还包括:
第六处理模块,用于在所述流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流失败的情况下,将所述第一SSRC由被占用状态修改为未被占用状态。
可选地,作为一个实施例,所述第二处理模块包括:
第一生成子模块,用于以目标概率值生成一批SSRC,其中,所述目标概率值与所述i负相关。
可选地,作为一个实施例,所述第一生成子模块包括:
生成单元,用于以所述目标概率值生成(N-i)个随机SSRC;
所述第二处理模块包括:
存储子模块,用于将所生成的所述(N-i)个SSRC中当前未被占用的第二SSRC存储于所述缓存中。
可选地,作为一个实施例,所述生成单元包括:
生成子单元,用于生成随机值p,其中,所述p的取值介于0至1之间;
确定子单元,用于确定(i/N)是否小于所述p,若所述(i/N)小于所述p,则生成(N-i)个随机SSRC。
可选地,作为一个实施例,所述第二处理模块包括:
第二生成子模块,用于生成(N-i)个当前未被占用的SSRC。
可选地,作为一个实施例,所述视频流传输方法应用于分布式部署场景;所述缓存为redis缓存,所述加锁操作所使用的锁为redis分布式锁,通过数据库记录所述第一SSRC为被占用状态。
根据本申请的第三方面,公开了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现如第一方面中的视频流传输方法。
根据本申请的第四方面,公开了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面中的视频流传输方法。
根据本申请的第五方面,公开了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如第一方面中的视频流传输方法。
本申请实施例中,预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;响应于接收到视频接入请求,执行加锁操作;确定缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于缓存中,M为正整数;将缓存中的第一SSRC分配给视频接入请求,其中,第一SSRC为当前未被占用的SSRC;删除缓存中第一SSRC,并记录第一SSRC为被占用状态;执行释放锁操作,并指示流媒体服务器以第一SSRC接收视频接入请求对应的视频流。
可见,本申请实施例中,采用预先生成SSRC的方式,在缓存中存放一批备用的空闲SSRC,在收到视频接入请求时,从缓存中选择一个可用的SSRC分配给视频接入请求,而不必每次收到视频接入请求都要执行一次SSRC生成操作,可以加快SSRC的分配速度。由于SSRC的分配速度较快,因此加锁和释放锁之间的时长大大缩短,可以降低分配SSRC时的锁粒度和锁竞争时长,避免出现视频流接入时间过长,甚至接口超时的问题,能够应对高并发量的视频接入请求,提高视频流的接入速度,从而提高视频传输效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的视频流传输方法的应用场景示例图;
图2是本申请实施例提供的一种视频流传输方法的流程图之一;
图3是本申请实施例提供的一种视频流传输方法的流程图之二;
图4是本申请实施例提供的一种视频流传输方法的流程图之三;
图5是本申请实施例提供的一种视频流传输装置的结构示意图;
图6是本申请实施例提供的一种电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种视频流传输方法、装置、电子设备及存储介质。
为了便于理解,下面首先对本申请实施例的应用场景和涉及到的一些概念进行介绍。
以摄像头采集到的视频流接入视频平台为例,视频流传输的应用场景:如图1所示,该应用场景中包括:视频流传输控制设备10、视频平台的流媒体服务器11和摄像头121、摄像头122,…,摄像头12n,n为大于1的整数。当视频平台的流媒体服务器11需要接入摄像头121~摄像头12n的视频流时,视频流传输控制设备10每接收到一个视频接入请求,就会为该视频接入请求对应的视频流分配一个SSRC,并下发给视频平台的流媒体服务器11,通知流媒体服务器11以该SSRC收流,而后视频流传输控制设备10会再调用信令服务,来通知对应的摄像头例如摄像头121,以该SSRC向流媒体服务器11推流。
视频同步源(Synchronization source,SSRC)是实时传输协议(Real-timeTransport Protocol,RTP)报文头中定义的一个32位字段,用来唯一标识一路流。
锁:是线程中的一种同步机制,通过加锁,可以实现对共享资源的互斥访问。本申请实施例中,锁用于避免不同视频流获取到相同SSRC而发生串流。
锁竞争(Lock Contention):是指大量的线程在同一个锁上发生竞争。对于锁竞争,若被保护的代码需要完成的工作量越多,则等待获得锁的线程也数量也变的越来越多。
现有技术中,在为视频接入请求分配SSRC时,每接收到一个视频接入请求,首先会加锁,之后为该视频接入请求实时生成一个SSRC,再下发给流媒体服务器,在接收到流媒体服务器的正确返回后,将该SSRC标记为已使用,完成上述操作后才可以释放锁。这样的分配方式效率较低,主要存在以下问题:每次收到一个视频接入请求都需要执行一次SSRC生成操作,生成SSRC的耗时较长导致锁粒度大,在高并发的视频接入请求场景下锁竞争时间较长,容易出现视频流接入时间过长,甚至接口超时的问题,导致视频流传输效率较低。
本申请实施例中,预先生成一批备用的SSRC,并存储于缓存中,当接收到视频接入请求时,直接从缓存中获取SSRC,并分配给视频接入请求,可以加快SSRC的分配速度,分配SSRC的耗时较短使得锁粒度小,避免在锁范围内与流媒体服务器交互,能够应对高并发量的视频接入请求,提高视频流的接入速度,减少视频数据的丢失,从而提高视频流传输效率。此外,通过将缓存中空闲的SSRC个数与阈值M进行比较,来及时补充缓存中的可用SSRC,保证了高并发的视频接入请求被分配到SSRC的可持续性。
接下来对本申请实施例提供的一种视频流传输方法进行介绍。
图2是本申请实施例提供的一种视频流传输方法的流程图之一,如图2所示,该方法可以包括以下步骤:步骤201、步骤202、步骤203、步骤204、步骤205和步骤206;
在步骤201中,预先生成N个不同的SSRC,并存储于缓存中,N为正整数。
本申请实施例中,考虑到视频接入场景的高并发特性,即需要在很短的时间内为大量的视频接入请求分配SSRC,因此SSRC的读取速度需要尽可能地快速。又由于相较于其他存储设备、单元或者模块,缓存可以支持数据的高速读取,因此将预先生成的SSRC写入缓存中,进行存储。
本申请实施例中,考虑到内存具备支持数据高速读取的特性,因此可以将预先生成的SSRC存储于内存的缓存中。
本申请实施例中,可以根据实际应用场景中视频接入请求的并发数,以及缓存的存储效率和成本,确定预先生成的SSRC的个数N。或者,也可以根据历史经验,确定预先生成的SSRC的个数N,本申请实施例对此不作限定。
本申请实施例中,在预先生成SSRC时,可以随机生成N个不同的SSRC。
在步骤202中,响应于接收到视频接入请求,执行加锁操作。
本申请实施例中,可以根据实际应用场景,选择用于执行加锁操作的锁。例如,对于分布式部署场景,可以选择redis分布式锁。
在步骤203中,确定缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于缓存中,M为正整数。
本申请实施例中,缓存中空闲的SSRC指的是可用的SSRC,也就是,缓存中当前未被占用的SSRC。
本申请实施例中,可以读取缓存中空闲的SSRC的个数i,通过比较当前空闲的SSRC的个数i是否小于M,来判断缓存中的可用SSRC是否不足,如果空闲的SSRC的个数i小于M,则认为缓存中的可用SSRC不足,需要生成一批SSRC或者尝试生成一批SSRC,以补充缓存中的可用SSRC。
在一些实施例中,考虑到一次性生成一批SSRC的时间成本比较高,为了降低时间成本,同时又确保缓存中的SSRC得到及时补充,可以以一定概率尝试为缓存生成一批SSRC,相应地,上述步骤203包括以下步骤:步骤2031;
在步骤2031中,确定缓存中空闲的SSRC的个数i是否小于M,若是,则以目标概率值生成一批SSRC,其中,目标概率值与i负相关。
本申请实施例中,缓存中空闲的SSRC的个数i越多,目标概率值越小,生成一批SSRC的概率越小;缓存中空闲的SSRC的个数i越小,目标概率值越大,生成一批SSRC的概率越大。
本申请实施例中,目标概率值可以为[1-(i/N)]。
本申请实施例中,为了进一步降低生成成本,可以以目标概率值生成(N-i)个随机SSRC。由于所生成的(N-i)个SSRC是一串随机字符串,其有可能与当前被占用的SSRC相同,为了确保缓存中的所有SSRC均是可用的,因此将所生成的(N-i)个SSRC中当前未被占用的第二SSRC存储于缓存中。
本申请实施例中,在以目标概率值生成(N-i)个随机SSRC时,可以通过以下步骤实现:生成随机值p,其中,p的取值介于0至1之间;确定(i/N)是否小于p,若(i/N)小于p,则生成(N-i)个随机SSRC。
在一些实施例中,为确保缓存中可用的SSRC一直处于充足状态,上述步骤203包括以下步骤:步骤2032;
在步骤2032中,生成(N-i)个当前未被占用的SSRC,将(N-i)个当前未被占用的SSRC存储于缓存中,使得缓存中的可用SSRC数量经常为N。
在步骤204中,将缓存中的第一SSRC分配给视频接入请求,其中,第一SSRC为当前未被占用的SSRC。
本申请实施例中,由于缓存中的SSRC均为可用的SSRC,因此可以随机从缓存中选择一个SSRC作为第一SSRC,分配给视频接入请求。
在步骤205中,删除缓存中第一SSRC,并记录第一SSRC为被占用状态。
本申请实施例中,为了避免第一SSRC被分配给多个视频接入请求,导致串流问题,因此在将第一SSRC分配给一个视频接入请求后,需要从缓存中删除第一SSRC。
本申请实施例中,为避免后续新生成的SSRC中存在与第一SSRC相同的SSRC时,将与第一SSRC相同的SSRC存储于缓存中导致串流的问题,需要记录第一SSRC为已被占用,使得上述生成的SSRC不会存储至缓存中。
在步骤206中,执行释放锁操作,并指示流媒体服务器以第一SSRC接收视频接入请求对应的视频流。
本申请实施例中,在流媒体服务器以第一SSRC接收视频接入请求对应的视频流成功的情况下,本次视频接入请求对应的视频流传输过程结束,继续处理后续接收到的视频接入请求。
本申请实施例中,在流媒体服务器以第一SSRC接收视频接入请求对应的视频流失败的情况下,将第一SSRC由被占用状态修改为未被占用状态,以实现对SSRC的回收。
由上述实施例可见,该实施例中,预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;响应于接收到视频接入请求,执行加锁操作;确定缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于缓存中,M为正整数;将缓存中的第一SSRC分配给视频接入请求,其中,第一SSRC为当前未被占用的SSRC;删除缓存中第一SSRC,并记录第一SSRC为被占用状态;执行释放锁操作,并指示流媒体服务器以第一SSRC接收视频接入请求对应的视频流。
可见,本申请实施例中,采用预先生成SSRC的方式,在缓存中存放一批备用的空闲SSRC,在收到视频接入请求时,从缓存中选择一个可用的SSRC分配给视频接入请求,而不必每次收到视频接入请求都要执行一次SSRC生成操作,可以加快SSRC的分配速度。由于SSRC的分配速度较快,因此加锁和释放锁之间的时长大大缩短,可以降低分配SSRC时的锁粒度和锁竞争时长,避免出现视频流接入时间过长,甚至接口超时的问题,能够应对高并发量的视频接入请求,提高视频流的接入速度,从而提高视频传输效率。
图3是本申请实施例提供的一种视频流传输方法的流程图之二,如图3所示,该方法可以包括以下步骤:步骤301、步骤302、步骤303、步骤304、步骤305和步骤306;
在步骤301中,预先生成N个不同的SSRC,并存储于缓存中,N为正整数。
在步骤302中,响应于接收到视频接入请求,获取锁,并基于获取到的锁执行加锁操作。
在步骤303中,查询当前缓存中空闲的SSRC个数i,与阈值M进行比较,若i小于M,则以概率[1-(i/N)]生成(N-i)个随机SSRC,将(N-i)个随机SSRC中当前未被占用的SSRC写入缓存。
本申请实施例中,可以反复执行上述步骤303,直至缓存中空闲SSRC数量大于等于M。
在步骤304中,从缓存中获取一个SSRC,将该SSRC从缓存中删除,并存入持久化数据库以标记其已被占用。
在步骤305中,释放锁。
在步骤306中,通知流媒体服务器准备以该SSRC收流。
本申请实施例中,若流媒体服务器以该SSRC收流成功,则程序结束;若流媒体服务器以该SSRC收流失败,将该SSRC从持久化数据库中删除,即标记其为未使用。
可见,本申请实施例中,使用预生成SSRC的方式,避免了每次收到一个接入请求都需要执行一次SSRC生成操作,提高了SSRC的获取速度,减小了生成SSRC时锁的粒度,避免了在锁范围内与流媒体服务器交互,减小了锁竞争,提高了并发度,从而加快了高并发场景下的视频流接入速度,可以提高视频流的传输效率。
图4是本申请实施例提供的一种视频流传输方法的流程图之三,本申请实施例中,视频传输方法可以应用于分布式部署场景,相应地,如图4所示,该方法可以包括以下步骤:步骤401、步骤402、步骤403、步骤404、步骤405和步骤406;
在步骤401中,预先生成N个不同的SSRC,并存储于redis缓存中,N为正整数。
本申请实施例中,用于存在SSRC的缓存为redis缓存,加锁操作所使用的锁为redis分布式锁,通过数据库记录第一SSRC为被占用状态。例如,通过mysql数据库记录第一SSRC为被占用状态。
在步骤402中,响应于接收到视频接入请求,使用setnx命令从redis数据库获取锁并执行加锁操作。
在步骤403中,查询redis缓存中剩余的空闲SSRC个数i,与阈值M进行比较,若i小于M,则以概率[1-(i/N)]生成(N-i)个随机SSRC,将其中实际未被占用的SSRC写入redis缓存。
本申请实施例中,可以反复执行上述步骤403,直至缓存中空闲SSRC数量大于等于M。
在步骤404中,从redis缓存中获取一个未被占用的SSRC分配给视频接入请求,将被分配的SSRC从redis缓存中删除,并存入数据库以标记该SSRC已被占用。
在步骤405中,释放redis锁。
在步骤406中,通知流媒体服务器准备以该SSRC收流,若流媒体服务器以该SSRC收流成功,则程序结束;若失败,将该SSRC从数据库中删除。
可见,本申请实施例中,使用redis缓存存放空闲SSRC,使用redis的数据库记录已被使用的SSRC,并采用redis分布式锁作为加锁方式,可以应对分布式部署场景,实现分布式部署场景下视频流的高效传输。
相应于上面的方法实施例,本申请实施例还提供了一种视频流传输装置,下文描述的视频流传输装置与上文描述的视频流传输方法可相互对应参照。
图5是本申请实施例提供的一种视频流传输装置的结构示意图,如图5所示,所述视频流传输装置500,可以包括:预处理模块501、第一处理模块502、第二处理模块503、第三处理模块504、第四处理模块505和第五处理模块506;
预处理模块501,用于预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;
第一处理模块502,用于响应于接收到视频接入请求,执行加锁操作;
第二处理模块503,用于确定所述缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于所述缓存中,M为正整数;
第三处理模块504,用于将所述缓存中的第一SSRC分配给所述视频接入请求,其中,所述第一SSRC为当前未被占用的SSRC;
第四处理模块505,用于删除所述缓存中所述第一SSRC,并记录所述第一SSRC为被占用状态;
第五处理模块506,用于执行释放锁操作,并指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流。
由上述实施例可见,该实施例中,预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;响应于接收到视频接入请求,执行加锁操作;确定缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于缓存中,M为正整数;将缓存中的第一SSRC分配给视频接入请求,其中,第一SSRC为当前未被占用的SSRC;删除缓存中第一SSRC,并记录第一SSRC为被占用状态;执行释放锁操作,并指示流媒体服务器以第一SSRC接收视频接入请求对应的视频流。
可见,本申请实施例中,采用预先生成SSRC的方式,在缓存中存放一批备用的空闲SSRC,在收到视频接入请求时,从缓存中选择一个可用的SSRC分配给视频接入请求,而不必每次收到视频接入请求都要执行一次SSRC生成操作,可以加快SSRC的分配速度。由于SSRC的分配速度较快,因此加锁和释放锁之间的时长大大缩短,可以降低分配SSRC时的锁粒度和锁竞争时长,避免出现视频流接入时间过长,甚至接口超时的问题,能够应对高并发量的视频接入请求,提高视频流的接入速度,从而提高视频传输效率。
可选地,作为一个实施例,所述视频流传输装置500,还可以包括:
第六处理模块,用于在所述流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流失败的情况下,将所述第一SSRC由被占用状态修改为未被占用状态。
可选地,作为一个实施例,所述第二处理模块503,可以包括:
第一生成子模块,用于以目标概率值生成一批SSRC,其中,所述目标概率值与所述i负相关。
可选地,作为一个实施例,所述第一生成子模块,可以包括:
生成单元,用于以所述目标概率值生成(N-i)个随机SSRC;
所述第二处理模块503,可以包括:
存储子模块,用于将所生成的所述(N-i)个SSRC中当前未被占用的第二SSRC存储于所述缓存中。
可选地,作为一个实施例,所述生成单元,可以包括:
生成子单元,用于生成随机值p,其中,所述p的取值介于0至1之间;
确定子单元,用于确定(i/N)是否小于所述p,若所述(i/N)小于所述p,则生成(N-i)个随机SSRC。
可选地,作为一个实施例,所述第二处理模块503,可以包括:
第二生成子模块,用于生成(N-i)个当前未被占用的SSRC。
可选地,作为一个实施例,所述视频流传输方法可以应用于分布式部署场景;所述缓存为redis缓存,所述加锁操作所使用的锁为redis分布式锁,通过数据库记录所述第一SSRC为被占用状态。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
相应于上面的方法实施例,本申请实施例还提供了一种电子设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述视频流传输方法的步骤。
如图6所示,为电子设备的组成结构示意图,电子设备可以包括:处理器610、存储器620、通信接口630和通信总线640。处理器610、存储器620、通信接口630均通过通信总线640完成相互间的通信。
在本申请实施例中,处理器610可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件等。
处理器610可以调用存储器620中存储的程序,具体的,处理器610可以执行CDN资源调度方法的实施例中的操作。
存储器620中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器620中至少存储有用于实现以下功能的程序:
预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;
响应于接收到视频接入请求,执行加锁操作;
确定所述缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于所述缓存中,M为正整数;
将所述缓存中的第一SSRC分配给所述视频接入请求,其中,所述第一SSRC为当前未被占用的SSRC;
删除所述缓存中所述第一SSRC,并记录所述第一SSRC为被占用状态;
执行释放锁操作,并指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流。
可见,本申请实施例中,采用预先生成SSRC的方式,在缓存中存放一批备用的空闲SSRC,在收到视频接入请求时,从缓存中选择一个可用的SSRC分配给视频接入请求,而不必每次收到视频接入请求都要执行一次SSRC生成操作,可以加快SSRC的分配速度。由于SSRC的分配速度较快,因此加锁和释放锁之间的时长大大缩短,可以降低分配SSRC时的锁粒度和锁竞争时长,避免出现视频流接入时间过长,甚至接口超时的问题,能够应对高并发量的视频接入请求,提高视频流的接入速度,从而提高视频传输效率。
在一种可能的实现方式中,存储器620可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。
此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件或其他易失性固态存储器件。
通信接口630可以为通信模块的接口,用于与其他设备或者系统连接。
当然,需要说明的是,图6所示的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备可以包括比图6所示的更多或更少的部件,或者组合某些部件。
相应于上面的方法实施例,本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述视频流传输方法的步骤。
此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文所对应实施例中视频流传输方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (15)
1.一种视频流传输方法,其特征在于,所述方法包括:
预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;
响应于接收到视频接入请求,执行加锁操作;
确定所述缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于所述缓存中,M为正整数;
将所述缓存中的第一SSRC分配给所述视频接入请求,其中,所述第一SSRC为当前未被占用的SSRC;
删除所述缓存中所述第一SSRC,并记录所述第一SSRC为被占用状态;
执行释放锁操作,并指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流。
2.根据权利要求1所述的方法,其特征在于,所述指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流之后,还包括:
在所述流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流失败的情况下,将所述第一SSRC由被占用状态修改为未被占用状态。
3.根据权利要求1所述的方法,其特征在于,所述执行生成SSRC的操作,包括:
以目标概率值生成一批SSRC,其中,所述目标概率值与所述i负相关。
4.根据权利要求3所述的方法,其特征在于,所述以目标概率值生成一批SSRC,包括:
以所述目标概率值生成(N-i)个随机SSRC;
所述将所生成的SSRC存储于所述缓存中,包括:
将所生成的所述(N-i)个SSRC中当前未被占用的第二SSRC存储于所述缓存中。
5.根据权利要求4所述的方法,其特征在于,所述以所述目标概率值生成(N-i)个随机SSRC,包括:
生成随机值p,其中,所述p的取值介于0至1之间;
确定(i/N)是否小于所述p,若所述(i/N)小于所述p,则生成(N-i)个随机SSRC。
6.根据权利要求1所述的方法,其特征在于,所述执行生成SSRC的操作,包括:
生成(N-i)个当前未被占用的SSRC。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述视频流传输方法应用于分布式部署场景;所述缓存为redis缓存,所述加锁操作所使用的锁为redis分布式锁,通过数据库记录所述第一SSRC为被占用状态。
8.一种视频流传输装置,其特征在于,所述装置包括:
预处理模块,用于预先生成N个不同的视频同步源SSRC,并存储于缓存中,N为正整数;
第一处理模块,用于响应于接收到视频接入请求,执行加锁操作;
第二处理模块,用于确定所述缓存中空闲的SSRC的个数i是否小于M,若是,则执行生成SSRC的操作,并将所生成的SSRC存储于所述缓存中,M为正整数;
第三处理模块,用于将所述缓存中的第一SSRC分配给所述视频接入请求,其中,所述第一SSRC为当前未被占用的SSRC;
第四处理模块,用于删除所述缓存中所述第一SSRC,并记录所述第一SSRC为被占用状态;
第五处理模块,用于执行释放锁操作,并指示流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第六处理模块,用于在所述流媒体服务器以所述第一SSRC接收所述视频接入请求对应的视频流失败的情况下,将所述第一SSRC由被占用状态修改为未被占用状态。
10.根据权利要求8所述的装置,其特征在于,所述第二处理模块包括:
第一生成子模块,用于以目标概率值生成一批SSRC,其中,所述目标概率值与所述i负相关。
11.根据权利要求10所述的装置,其特征在于,所述第一生成子模块包括:
生成单元,用于以所述目标概率值生成(N-i)个随机SSRC;
所述第二处理模块包括:
存储子模块,用于将所生成的所述(N-i)个SSRC中当前未被占用的第二SSRC存储于所述缓存中。
12.根据权利要求11所述的装置,其特征在于,所述生成单元包括:
生成子单元,用于生成随机值p,其中,所述p的取值介于0至1之间;
确定子单元,用于确定(i/N)是否小于所述p,若所述(i/N)小于所述p,则生成(N-i)个随机SSRC。
13.根据权利要求8所述的装置,其特征在于,所述第二处理模块包括:
第二生成子模块,用于生成(N-i)个当前未被占用的SSRC。
14.一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-7任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310042919.6A CN116074553B (zh) | 2023-01-28 | 2023-01-28 | 视频流传输方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310042919.6A CN116074553B (zh) | 2023-01-28 | 2023-01-28 | 视频流传输方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116074553A CN116074553A (zh) | 2023-05-05 |
CN116074553B true CN116074553B (zh) | 2023-06-23 |
Family
ID=86181592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310042919.6A Active CN116074553B (zh) | 2023-01-28 | 2023-01-28 | 视频流传输方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116074553B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104270594A (zh) * | 2014-09-24 | 2015-01-07 | 大唐移动通信设备有限公司 | 数据包发送与接收的方法及设备 |
CN104660546A (zh) * | 2013-11-18 | 2015-05-27 | 北京信威通信技术股份有限公司 | 一种基于ssrc的收发rtp包的方法 |
CN111770067A (zh) * | 2020-06-12 | 2020-10-13 | 山东浪潮通软信息科技有限公司 | 一种基于物联网的安防视频采集方法、设备及系统 |
CN115174539A (zh) * | 2022-06-28 | 2022-10-11 | 上海网达软件股份有限公司 | 一种安防视频流传输方法、系统、设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8970661B2 (en) * | 2012-10-20 | 2015-03-03 | Microsoft Technology Licensing, Llc | Routing for video in conferencing |
-
2023
- 2023-01-28 CN CN202310042919.6A patent/CN116074553B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104660546A (zh) * | 2013-11-18 | 2015-05-27 | 北京信威通信技术股份有限公司 | 一种基于ssrc的收发rtp包的方法 |
CN104270594A (zh) * | 2014-09-24 | 2015-01-07 | 大唐移动通信设备有限公司 | 数据包发送与接收的方法及设备 |
CN111770067A (zh) * | 2020-06-12 | 2020-10-13 | 山东浪潮通软信息科技有限公司 | 一种基于物联网的安防视频采集方法、设备及系统 |
CN115174539A (zh) * | 2022-06-28 | 2022-10-11 | 上海网达软件股份有限公司 | 一种安防视频流传输方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116074553A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107241281B (zh) | 一种数据处理方法及其装置 | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN111158878B (zh) | 资源转移请求线程控制方法、装置及存储介质 | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
CN112214313A (zh) | 内存分配方法及相关设备 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN115426361A (zh) | 分布式客户端打包方法、装置、主服务器及存储介质 | |
CN110795234A (zh) | 一种资源调度方法及装置 | |
CN116074553B (zh) | 视频流传输方法、装置、电子设备及存储介质 | |
CN111416858B (zh) | 一种媒体资源的处理平台、方法、装置和服务器 | |
CN112054919B (zh) | 容器集群无状态下的id生成方法、装置、存储介质及系统 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN112506632A (zh) | 分布式系统中批任务的调度方法和系统 | |
CN111638979A (zh) | 调用请求的处理方法、装置、电子设备及可读存储介质 | |
CN112346848A (zh) | 一种管理内存池的方法、装置及终端 | |
CN115905155A (zh) | 一种逻辑日志同步的并行传输的方法 | |
CN115629901A (zh) | 日志回放方法及装置、数据恢复方法及装置、电子设备 | |
CN112835862B (zh) | 一种数据同步方法、装置、系统及存储介质 | |
EP3346671A1 (en) | Service processing method and equipment | |
CN112099728B (zh) | 一种执行写操作、读操作的方法及装置 | |
CN113886082A (zh) | 请求处理方法、装置、计算设备及介质 | |
RU2679546C2 (ru) | Устройство и способ прогона множества потоков | |
CN112181737A (zh) | 消息处理方法、装置、电子设备及介质 | |
CN112597227A (zh) | 电力配网调度中的信息处理方法、装置及存储介质 | |
CN108255820B (zh) | 分布式系统中数据入库的方法、装置以及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: 100093 Floor 4, Block E, Xishan Yingfu Business Center, Haidian District, Beijing Patentee before: Tianyiyun Technology Co.,Ltd. |