1.本发明实施例涉及业务支撑技术领域,具体涉及一种基于动态资源释放的视频直播性能优化方法及装置。
背景技术:
2.随着移动互联网的发展,越来越多的业务应用采用了视频直播来实现业务办理的可视化及提高业务办理的速度。视频直播主要分为视频采集端、视频分发端、视频播放端。视频采集端采集原始音视频数据,经过编码压缩后上传到视频分发端。视频分发端缓存上传的音视频数据并下发给视频播放端进行解码解压播放。在三端的处理当中均涉及到各类资源的申请释放,同时还涉及到在多个线程当中进行各资源的传递,在资源的使用当中还可能存在各异常分支,从而导致谁来释放资源、什么时候释放该资源等问题的存在。采用传统的资源手工申请释放会导致资源忘记释放、资源错误释放等,会导致程序不稳定、测试工作量大等困难。
技术实现要素:
3.鉴于上述问题,本发明实施例提供了一种基于动态资源释放的视频直播性能优化方法及装置,克服了上述问题或者至少部分地解决了上述问题。
4.根据本发明实施例的一个方面,提供了一种基于动态资源释放的视频直播性能优化方法,所述方法包括:获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象。
5.在一种可选的方式中,所述为所述音视频数据构造第一智能资源对象,包括:根据所述音视频数据的大小申请内存空间,并构造第一智能资源对象,其中,所述第一智能资源对象为对象内存、数组内存、文件、网络、com对象及程序自定义对象的其中之一;将所述音视频数据存储到新申请的所述第一智能资源对象所管理的内存空间当中,将引用计数设为1,返回所述第一智能资源对象。
6.在一种可选的方式中,所述将所述音视频数据存储到新申请的所述第一智能资源对象所管理的内存空间当中,包括:如果网络出现异常,函数异常返回,则对所述第一智能资源对象进行自动析构。
7.在一种可选的方式中,所述将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,包括:将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,同时将所述第二智能资源对象的引用计数加1;通过所述分发线程将存储所述音视频数据的所述第二智能资源对象存储到待发送队列;通过所述分发线程将所述音视频数据发送至视频播放端进行视频播放。
8.在一种可选的方式中,假设所述第一智能资源对象持有第一资源,所述第二智能资源对象持有第二资源,所述将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,包括:如果所述第二资源的引用计数不为0,则将所述第二资源的引用计数减1,将所述第二智能资源对象指向所述第一资源;将所述第一资源的引用计数加1。
9.在一种可选的方式中,所述对所述第一智能资源对象进行析构,包括:将所述第一智能资源对象的引用计数减1;所述对所述第二智能资源对象进行析构,包括:将所述第二智能资源对象的引用计数减1。
10.在一种可选的方式中,所述所有所述分发线程结束时,释放所述第一智能资源对象,包括:如果所述第一智能资源对象的引用计数为0,则确定所有所述分发线程结束;释放所述第一智能资源对象。
11.根据本发明实施例的另一个方面,提供了一种基于动态资源释放的视频直播性能优化装置,所述装置包括:构造单元,用于获取音视频数据,并为所述音视频数据构造第一智能资源对象;赋值单元,用于将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;析构单元,用于接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;释放单元,用于所有所述分发线程结束时,释放所述第一智能资源对象。
12.根据本发明实施例的另一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
13.所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述基于动态资源释放的视频直播性能优化方法的步骤。
14.根据本发明实施例的又一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使所述处理器执行上述基于动态资源释放的视频直播性能优化方法的步骤。
15.本发明实施例通过获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象,能够程序开发中各类资源的自动释放,从而减少程序开发时资源管理工作,防止误释放或忘记释放资源,提高视频播放的稳定可靠性。
16.上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
17.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
18.图1示出了本发明实施例提供的基于动态资源释放的视频直播性能优化装置的结
构示意图;
19.图2示出了基于动态资源释放的视频直播性能优化装置的应用示意图;
20.图3示出了本发明实施例提供的基于动态资源释放的视频直播性能优化方法的赋值示意图;
21.图4示出了本发明实施例提供的基于动态资源释放的视频直播性能优化方法的流程示意图;
22.图5示出了本发明实施例提供的又一基于动态资源释放的视频直播性能优化方法的流程示意图;
23.图6示出了本发明实施例提供的计算设备的结构示意图。
具体实施方式
24.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
25.图1示出了本发明实施例提供的基于动态资源释放的视频直播性能优化装置的结构示意图。如图1所示,基于动态资源释放的视频直播性能优化装置包括智能资源对象的构造单元101、赋值单元102、析构单元103、释放单元104以及计数单元105。其中:
26.构造单元101用于获取音视频数据,并为所述音视频数据构造第一智能资源对象;赋值单元102用于将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;析构单元103用于接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;释放单元104用于所有所述分发线程结束时,释放所述第一智能资源对象。
27.图2为本发明实施例的基于动态资源释放的视频直播性能优化装置的应用示意图,如图2所示,智能资源对象的使用端包括视频采集端、视频分发端、视频播放端,此三端通过调用智能资源对象的构造单元101、赋值单元102、析构单元103实现资源的构造、使用、不同线程间分发、自动释放等功能。
28.在本发明实施例中,构造单元101用于接收各类资源,如对象内存、数组内存、文件、网络、com对象及程序自定义对象的指针,将指针缓存到智能对象里,生成计数单元105,将引用计数设为1,返回智能资源对象。使用端通过使用智能资源对象即可安全的使用资源指针完成资源的各类操作。构造单元101支持构造一个不包括任何资源的空对象,此时计数单元105的引用计数为0。
29.可选地,构造单元101用于根据所述音视频数据的大小申请内存空间,并构造第一智能资源对象,其中,所述第一智能资源对象为对象内存、数组内存、文件、网络、com对象及程序自定义对象的其中之一;将所述音视频数据存储到新申请的所述第一智能资源对象所管理的内存空间当中,将引用计数设为1,即调用计数单元105使第一智能资源对象的引用计数为1,返回所述第一智能资源对象。在此过程中,如果网络出现异常,函数异常返回,则对第一智能资源对象进行自动析构,由于此时无其他智能资源对象对此资源的引用,资源的引用计数将减到0,从而释放单元104将自动释放资源。
30.赋值单元102用于同一个资源在不同函数、不同线程之间的传递。赋值涉及到两个智能资源对象,分别为源对象和目的对象,功能是将源对象的资源赋值到目的对象,从而使用端可通过目的对象操作相应的资源。假设第一智能资源对象持有第一资源,第二智能资源对象持有第二资源,如图3所示,其中,图3中的目的对象为第二智能资源对象,源对象为第一智能资源对象,如果第二资源的引用计数不为0,则需先释放第二资源的引用计数,将第二资源的引用计数减1,即调用第二资源的计数单元105使第二资源的引用计数减1,再将第二智能资源对象指向第一资源;同时将第一资源的引用计数加1,即引用第一资源的计数单元105使第一资源的引用计数加1。
31.可选地,赋值单元102将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,同时将所述第二智能资源对象的引用计数加1,即调用计数单元使第二智能资源对象的引用计数加1;通过所述分发线程将存储所述音视频数据的所述第二智能资源对象存储到待发送队列;通过所述分发线程将所述音视频数据发送至视频播放端进行视频播放。
32.析构单元103利用栈对象在超出作用域时自动调用智能资源对象的析构函数原理来实现调用计数单元引用计数自动减1。如在函数里面定义智能资源对象,当函数正常返回或异常结束时,均会自动调用对象的析构函数,所以智能资源对象的赋值传递必须传递对象的值,不能传递对象的指针,但资源对象里面存储的资源及计数必须为指针。
33.可选地,在完成视频播放后,析构单元103对所述第二智能资源对象进行析构,即将所述第二智能资源对象的引用计数减1;接收到所述分发线程返回的处理成功消息,析构单元103对所述第一智能资源对象进行析构,即将所述第一智能资源对象的引用计数减1。
34.计数单元105实现资源引用计数的管理,为防止多线程出现资源的竞争引用,引用计数的增加及减少需实现原子性操作,即一个线程在对计数进行加或减时,其他线程不可以访问计数值及修改计数值。当引用计数减为0,计数单元自动调用释放单元进行资源的释放操作,同时将当前资源及引用计数置空。同一个资源对应的多个智能资源对象共享同一个资源指针及计数单元,不同的资源对应的多个智能资源对象对应的计数单元也不一样。
35.释放单元104内置了各类标准资源的释放方法,对于这些资源的释放可以自动调用内置的释放方法进行资源释放。各类标准资源的释放方法清单如下表1所示,
36.表1标准单元释放方法清单
37.标准资源名称释放方法new申请的对象内存指针ptrdelete ptrmalloc申请的内存指针ptrfree(ptr)new申请的数组内存指针ptrdelete[]ptrc文件指针fileclose(file)网络socketclosesocket(socket)com对象pcompcom-》relase()
[0038]
除各类标准资源外,释放单元104还提供自定义对象释放方法注册功能,注册时需提供资源标识及资源释放方法,在构造时传入资源标识即可,释放单元104在释放资源时根据资源标识自动调用资源释放方法。
[0039]
释放单元104根据资源名称自动调用如表1中的内置的与标准资源名称对应的释
放方法进行资源释放,在本发明实施例中,如果所述第一智能资源对象的引用计数为0,则确定所有所述分发线程结束;释放单元104释放所述第一智能资源对象。本发明实施例建立了程序里各类标准资源自动释放方法的清单列表,自动释放的资源包括对象内存、数组内存、文件、网络、com对象等,同时通过资源标识建立释放单元与构造单元的关联,实现自定义对象的自动释放。
[0040]
本发明实施例通过由计数单元、释放单元、构造单元、赋值单元、析构单元等构成的智能资源对象,实现程序开发中各类资源的自动释放,从而减少程序开发时资源管理工作、防止误释放或忘记释放资源、提高视频播放的稳定可靠性。计数单元负责资源的引用计数,当引用计数到0时自动释放资源。释放单元内置标准对象的释放方法,程序直接使用即可,该单元同时为程序提供自定义对象释放方法的注册功能。构造单元用于构造一个新的包含资源的自动释放对象,构造时自动生成计数单元。赋值单元自动调用计数单元使已引用的资源引用数减1并使待引用的资源引用数加1。析构单元自动调用计数单元使引用的资源引用数减1。
[0041]
图4示出了本发明实施例提供的基于动态资源释放的视频直播性能优化方法的流程示意图。如图4所示,基于动态资源释放的视频直播性能优化方法包括:
[0042]
步骤s11:获取音视频数据,并为所述音视频数据构造第一智能资源对象。
[0043]
在本发明实施例中,通过视频采集端采集到音频和视频数据后,进行编码压缩后通过网络套接字(socket)将数据传输到视频分发端的数据接收端。
[0044]
在本发明实施例中,为所述音视频数据构造第一智能资源对象时,根据所述音视频数据的大小申请内存空间,并构造第一智能资源对象,其中,所述第一智能资源对象为对象内存、数组内存、文件、网络、com对象及程序自定义对象的其中之一;再将所述音视频数据存储到新申请的所述第一智能资源对象所管理的内存空间当中,将引用计数设为1,返回所述第一智能资源对象。在此过程中,如果网络出现异常,则函数异常返回,对所述第一智能资源对象进行自动析构,由于无其他智能对象对此资源的引用,资源的引用计数将减到0,从而自动释放资源。
[0045]
步骤s12:将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构。
[0046]
在本发明实施例中,将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,同时将所述第二智能资源对象的引用计数加1,实现同一个资源在不同函数、不同线程之间的传递。假设所述第一智能资源对象持有第一资源,所述第二智能资源对象持有第二资源,在将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象的过程中,如果所述第二资源的引用计数不为0,则将所述第二资源的引用计数减1,将所述第二智能资源对象指向所述第一资源;将所述第一资源的引用计数加1。分发线程的个数可能存在多个,因此该赋值过程将会进行多次。分发线程也可能不存在,此时函数直接结束,与步骤11中的异常情况一样,会自动释放资源。
[0047]
完成赋值后,再通过所述分发线程将存储所述音视频数据的所述第二智能资源对象存储到待发送队列,同时向数据接收端返回处理成功消息。通过所述分发线程将所述音视频数据发送至视频播放端进行视频播放。并在完成视频播放后,即分发函数线程结束,对所述第二智能资源对象进行析构,即对被赋值的第二智能资源对象进行自动析构,将所述
第二智能资源对象的引用计数减1。
[0048]
步骤s13:接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构。
[0049]
接收到分发线程返回的处理成功消息后,对所述第一智能资源对象进行析构,具体地,将所述第一智能资源对象的引用计数减1。由于此时存在其他分发线程中的智能资源对象对当前资源的引用,所以引用计数不为0,资源不会释放。
[0050]
步骤s14:所有所述分发线程结束时,释放所述第一智能资源对象。
[0051]
在本发明实施例中,如果所述第一智能资源对象的引用计数为0,则确定所有所述分发线程结束,释放所述第一智能资源对象,从而实现资源的自动释放。
[0052]
下面以视频分发端接收到音视频数据并将此数据分发到各视频播放端,并连接到视频分发端的分发线程内存为例说明智能资源对象的构造、分发、析构、释放过程。由于多线程存在不同的调度时序,以下的说明只针对其中一种时序进行说明,其他时序并无太大差别。完整的基于动态资源释放的视频直播性能优化方法如图5所示,包括:
[0053]
步骤1:视频采集端向数据接收端发送音视频数据。
[0054]
具体地,视频采集端采集到音频和视频数据后,进行编码压缩后通过网络socket将音视频数据传输到视频分发端的数据接收端。
[0055]
步骤2:数据接收端构造第一智能资源对象。
[0056]
具体地,数据接收端根据传输数据的大小,申请内存空间并通过智能资源对象的构造单元构造一个新的第一智能资源对象。
[0057]
步骤3:数据接收端接收音视频数据。
[0058]
具体地,数据接收端通过网络socket将接收到的音视频数据存储到新申请的第一智能资源对象所管理的内存空间当中,此步骤如果网络出现各种异常,则函数异常返回,对第一智能资源对象进行自动析构,由于无其他智能对象对此资源的引用,资源的引用计数将减到0,从而实现自动释放资源。
[0059]
步骤4:数据接收端向分发线程赋值生成第二智能资源对象。
[0060]
具体地,数据接收端通过赋值单元将前面申请的第一智能资源对象赋值给分发线程里的空的第二智能资源对象。分发的个数可能存在多个,例如n个,因此这里赋值将会进行多次;分发的线程也可能不存在,此时函数直接结束,和步骤3的异常情况一样,会自动释放资源。
[0061]
步骤5:分发线程将第二智能资源对象加入待发送队列。
[0062]
具体地,各分发线程将存储音视频数据的第二智能资源对象存储到待发送队列。
[0063]
步骤6:分发线程向数据接收端返回处理成功消息。
[0064]
各分发线程返回处理成功消息给数据接收端。
[0065]
步骤7:函数结束,自动析构第一智能资源对象。
[0066]
数据接收端收到各分发线程返回处理成功的消息后,函数自动结束,当前函数的第一智能资源对象将进行析构,由于存在其他分发线程中的智能资源对象对当前资源的引用,所以引用计数不为0,资源不会释放。
[0067]
步骤8:分发线程发送音视频数据给视频播放端。
[0068]
具体地,分发线程通过网络socket将音视频数据下发各视频播放端进行视频的播
放。
[0069]
步骤9:函数结束,自动析构第二智能资源对象。
[0070]
分发函数线程结束,对被赋值的第二智能资源对象进行自动析构。当所有分发线程函数都结束时,资源的计数为0,从而实现资源的自动释放。
[0071]
本发明实施例通过获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象,能够实现程序开发中各类资源的自动释放,从而减少程序开发时资源管理工作,防止误释放或忘记释放资源,提高视频播放的稳定可靠性。
[0072]
本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于动态资源释放的视频直播性能优化方法。
[0073]
可执行指令具体可以用于使得处理器执行以下操作:
[0074]
获取音视频数据,并为所述音视频数据构造第一智能资源对象;
[0075]
将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;
[0076]
接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;
[0077]
所有所述分发线程结束时,释放所述第一智能资源对象。
[0078]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0079]
根据所述音视频数据的大小申请内存空间,并构造第一智能资源对象,其中,所述第一智能资源对象为对象内存、数组内存、文件、网络、com对象及程序自定义对象的其中之一;
[0080]
将所述音视频数据存储到新申请的所述第一智能资源对象所管理的内存空间当中,将引用计数设为1,返回所述第一智能资源对象。
[0081]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0082]
如果网络出现异常,函数异常返回,则对所述第一智能资源对象进行自动析构。
[0083]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0084]
将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,同时将所述第二智能资源对象的引用计数加1;
[0085]
通过所述分发线程将存储所述音视频数据的所述第二智能资源对象存储到待发送队列;
[0086]
通过所述分发线程将所述音视频数据发送至视频播放端进行视频播放。
[0087]
在一种可选的方式中,假设所述第一智能资源对象持有第一资源,所述第二智能资源对象持有第二资源,所述可执行指令使所述处理器执行以下操作:
[0088]
如果所述第二资源的引用计数不为0,则将所述第二资源的引用计数减1,将所述第二智能资源对象指向所述第一资源;
[0089]
将所述第一资源的引用计数加1。
[0090]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0091]
所述对所述第一智能资源对象进行析构,包括:将所述第一智能资源对象的引用计数减1;
[0092]
所述对所述第二智能资源对象进行析构,包括:将所述第二智能资源对象的引用计数减1。
[0093]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0094]
如果所述第一智能资源对象的引用计数为0,则确定所有所述分发线程结束;
[0095]
释放所述第一智能资源对象。
[0096]
本发明实施例通过获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象,能够实现程序开发中各类资源的自动释放,从而减少程序开发时资源管理工作,防止误释放或忘记释放资源,提高视频播放的稳定可靠性。
[0097]
本发明实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意方法实施例中的基于动态资源释放的视频直播性能优化方法。
[0098]
可执行指令具体可以用于使得处理器执行以下操作:
[0099]
获取音视频数据,并为所述音视频数据构造第一智能资源对象;
[0100]
将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;
[0101]
接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;
[0102]
所有所述分发线程结束时,释放所述第一智能资源对象。
[0103]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0104]
根据所述音视频数据的大小申请内存空间,并构造第一智能资源对象,其中,所述第一智能资源对象为对象内存、数组内存、文件、网络、com对象及程序自定义对象的其中之一;
[0105]
将所述音视频数据存储到新申请的所述第一智能资源对象所管理的内存空间当中,将引用计数设为1,返回所述第一智能资源对象。
[0106]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0107]
如果网络出现异常,函数异常返回,则对所述第一智能资源对象进行自动析构。
[0108]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0109]
将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,同时将所述第二智能资源对象的引用计数加1;
[0110]
通过所述分发线程将存储所述音视频数据的所述第二智能资源对象存储到待发送队列;
[0111]
通过所述分发线程将所述音视频数据发送至视频播放端进行视频播放。
[0112]
在一种可选的方式中,假设所述第一智能资源对象持有第一资源,所述第二智能资源对象持有第二资源,所述可执行指令使所述处理器执行以下操作:
[0113]
如果所述第二资源的引用计数不为0,则将所述第二资源的引用计数减1,将所述第二智能资源对象指向所述第一资源;
[0114]
将所述第一资源的引用计数加1。
[0115]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0116]
所述对所述第一智能资源对象进行析构,包括:将所述第一智能资源对象的引用计数减1;
[0117]
所述对所述第二智能资源对象进行析构,包括:将所述第二智能资源对象的引用计数减1。
[0118]
在一种可选的方式中,所述可执行指令使所述处理器执行以下操作:
[0119]
如果所述第一智能资源对象的引用计数为0,则确定所有所述分发线程结束;
[0120]
释放所述第一智能资源对象。
[0121]
本发明实施例通过获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象,能够实现程序开发中各类资源的自动释放,从而减少程序开发时资源管理工作,防止误释放或忘记释放资源,提高视频播放的稳定可靠性。
[0122]
图6示出了本发明实施例提供的计算设备的结构示意图,本发明具体实施例并不对设备的具体实现做限定。
[0123]
如图6所示,该计算设备可以包括:处理器(processor)602、通信接口(communications interface)604、存储器(memory)606、以及通信总线608。
[0124]
其中:处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。处理器602,用于执行程序610,具体可以执行上述基于动态资源释放的视频直播性能优化方法实施例中的相关步骤。
[0125]
具体地,程序610可以包括程序代码,该程序代码包括计算机操作指令。
[0126]
处理器602可能是中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本发明实施例的一个或各个集成电路。设备包括的一个或各个处理器,可以是同一类型的处理器,如一个或各个cpu;也可以是不同类型的处理器,如一个或各个cpu以及一个或各个asic。
[0127]
存储器606,用于存放程序610。存储器606可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0128]
程序610具体可以用于使得处理器602执行以下操作:
[0129]
获取音视频数据,并为所述音视频数据构造第一智能资源对象;
[0130]
将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;
[0131]
接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;
[0132]
所有所述分发线程结束时,释放所述第一智能资源对象。
[0133]
在一种可选的方式中,所述程序610使所述处理器执行以下操作:
[0134]
根据所述音视频数据的大小申请内存空间,并构造第一智能资源对象,其中,所述第一智能资源对象为对象内存、数组内存、文件、网络、com对象及程序自定义对象的其中之一;
[0135]
将所述音视频数据存储到新申请的所述第一智能资源对象所管理的内存空间当中,将引用计数设为1,返回所述第一智能资源对象。
[0136]
在一种可选的方式中,所述程序610使所述处理器执行以下操作:
[0137]
如果网络出现异常,函数异常返回,则对所述第一智能资源对象进行自动析构。
[0138]
在一种可选的方式中,所述程序610使所述处理器执行以下操作:
[0139]
将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,同时将所述第二智能资源对象的引用计数加1;
[0140]
通过所述分发线程将存储所述音视频数据的所述第二智能资源对象存储到待发送队列;
[0141]
通过所述分发线程将所述音视频数据发送至视频播放端进行视频播放。
[0142]
在一种可选的方式中,假设所述第一智能资源对象持有第一资源,所述第二智能资源对象持有第二资源,所述程序610使所述处理器执行以下操作:
[0143]
如果所述第二资源的引用计数不为0,则将所述第二资源的引用计数减1,将所述第二智能资源对象指向所述第一资源;
[0144]
将所述第一资源的引用计数加1。
[0145]
在一种可选的方式中,所述程序610使所述处理器执行以下操作:
[0146]
所述对所述第一智能资源对象进行析构,包括:将所述第一智能资源对象的引用计数减1;
[0147]
所述对所述第二智能资源对象进行析构,包括:将所述第二智能资源对象的引用计数减1。
[0148]
在一种可选的方式中,所述程序610使所述处理器执行以下操作:
[0149]
如果所述第一智能资源对象的引用计数为0,则确定所有所述分发线程结束;
[0150]
释放所述第一智能资源对象。
[0151]
本发明实施例通过获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象,能够实现程序开发中各类资源的自动释放,从而减少程序开发时资源管理工作,防止误释放或忘记释放资源,提高视频播放的稳定可靠性。
[0152]
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0153]
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构
和技术,以便不模糊对本说明书的理解。
[0154]
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
[0155]
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0156]
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
技术特征:
1.一种基于动态资源释放的视频直播性能优化方法,其特征在于,所述方法包括:获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象。2.根据权利要求1所述的方法,其特征在于,所述为所述音视频数据构造第一智能资源对象,包括:根据所述音视频数据的大小申请内存空间,并构造第一智能资源对象,其中,所述第一智能资源对象为对象内存、数组内存、文件、网络、com对象及程序自定义对象的其中之一;将所述音视频数据存储到新申请的所述第一智能资源对象所管理的所述内存空间当中,将引用计数设为1,返回所述第一智能资源对象。3.根据权利要求2所述的方法,其特征在于,所述将所述音视频数据存储到新申请的所述第一智能资源对象所管理的所述内存空间当中,包括:如果网络出现异常,函数异常返回,则对所述第一智能资源对象进行自动析构。4.根据权利要求1所述的方法,其特征在于,所述将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,包括:将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,同时将所述第二智能资源对象的引用计数加1;通过所述分发线程将存储所述音视频数据的所述第二智能资源对象存储到待发送队列;通过所述分发线程将所述音视频数据发送至视频播放端进行视频播放。5.根据权利要求4所述的方法,其特征在于,假设所述第一智能资源对象持有第一资源,所述第二智能资源对象持有第二资源,所述将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象,包括:如果所述第二资源的引用计数不为0,则将所述第二资源的引用计数减1,将所述第二智能资源对象指向所述第一资源;将所述第一资源的引用计数加1。6.根据权利要求4所述的方法,其特征在于,所述对所述第一智能资源对象进行析构,包括:将所述第一智能资源对象的引用计数减1;所述对所述第二智能资源对象进行析构,包括:将所述第二智能资源对象的引用计数减1。7.根据权利要求1所述的方法,其特征在于,所述所有所述分发线程结束时,释放所述第一智能资源对象,包括:如果所述第一智能资源对象的引用计数为0,则确定所有所述分发线程结束;释放所述第一智能资源对象。8.一种基于动态资源释放的视频直播性能优化装置,其特征在于,所述装置包括:构造单元,用于获取音视频数据,并为所述音视频数据构造第一智能资源对象;
赋值单元,用于将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;析构单元,用于接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;释放单元,用于所有所述分发线程结束时,释放所述第一智能资源对象。9.一种计算设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行根据权利要求1-7任一项所述基于动态资源释放的视频直播性能优化方法的步骤。10.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行根据权利要求1-7任一项所述基于动态资源释放的视频直播性能优化方法的步骤。
技术总结
本发明实施例涉及业务支撑技术领域,公开了一种基于动态资源释放的视频直播性能优化方法及装置,该方法包括:获取音视频数据,并为所述音视频数据构造第一智能资源对象;将所述第一智能资源对象赋值给至少一个分发线程中的第二智能资源对象以进行视频播放,并在完成视频播放后,对所述第二智能资源对象进行析构;接收所述分发线程返回的处理成功消息,并对所述第一智能资源对象进行析构;所有所述分发线程结束时,释放所述第一智能资源对象。通过上述方式,本发明实施例能够实现程序开发中各类资源的自动释放,从而减少程序开发时资源管理工作,防止误释放或忘记释放资源,提高视频播放的稳定可靠性。频播放的稳定可靠性。频播放的稳定可靠性。
技术研发人员:戈宇翔
受保护的技术使用者:中国移动通信集团有限公司
技术研发日:2020.11.23
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-15988.html