发明内容
有鉴于此,本发明实施例提供一种录屏直播方法、装置、电子设备及存储介质,能够解决录屏直播不稳定,容易崩溃的问题。
第一方面,本发明实施例提供一种录屏直播方法包括:通过第一进程获取录屏数据;将获取的所述录屏数据传递给第二进程;其中,所述第二进程分配到的系统资源大于所述第一进程分配到的系统资源;通过所述第二进程对所述录屏数据进行直播推流。
结合第一方面,在第一方面的第一种实施方式中,所述第一进程包括录屏扩展插件,所述第二进程包括直播应用,所述第一进程依附于所述第二进程。
结合第一方面,在第一方面的第二种实施方式中,所述录屏数据包括音频数据和/或视频数据;所述将获取的所述录屏数据传递给第二进程包括:将所述录屏数据中的音频数据直接传递给所述第二进程,将所述录屏数据中的视频数据进行视频压缩并将压缩后的视频数据传递给所述第二进程。
结合第一方面,在第一方面的第三种实施方式中,将所述录屏数据传递给所述第二进程的方式包括以下至少一种:通过读写指令直接传递、通过套接字socket进行数据传递、通过共享内存进行数据传递。
结合第一方面的第三种实施方式,在第一方面的第四种实施方式中,所述通过所述第二进程对所述录屏数据进行直播推流包括:对于通过读写指令或共享内存的方式传递的录屏数据,通过所述第二进程直接将录屏数据封装成推流格式进行直播推流;对于通过socket方式传递的录屏数据,通过所述第二进程对录屏数据进行拆包再封装成推流格式进行直播推流。
结合第一方面或第一方面的第一至第四中任一种实施方式,在第一方面的第五种实施方式中,本发明实施例提供的录屏直播方法还包括:通过所述第一进程和所述第二进程之间的进程间通信协商传递所述录屏数据的时间节点,其中,所述时间节点的协商由所述第一进程或所述第二进程中的任何一方主动发起。
第二方面,本发明的实施例还提供一种录屏直播装置,包括:获取单元,用于通过第一进程获取录屏数据;传递单元,用于将获取的所述录屏数据传递给第二进程;其中,所述第二进程分配到的系统资源大于所述第一进程分配到的系统资源;推流单元,用于通过所述第二进程对所述录屏数据进行直播推流。
结合第二方面,在第二方面的第一种实施方式中,所述第一进程包括录屏扩展插件,所述第二进程包括直播应用,所述第一进程依附于所述第二进程。
结合第二方面,在第二方面的第二种实施方式中,所述录屏数据包括音频数据和/或视频数据;所述传递单元,具体用于将所述录屏数据中的音频数据直接传递给所述第二进程,将所述录屏数据中的视频数据进行视频压缩并将压缩后的视频数据传递给所述第二进程。
结合第二方面,在第二方面的第三种实施方式中,将所述录屏数据传递给所述第二进程的方式包括以下至少一种:通过读写指令直接传递、通过套接字socket进行数据传递、通过共享内存进行数据传递。
结合第二方面的第三种实施方式,在第二方面的第四种实施方式中,所述推流单元包括:第一推流模块,用于对于通过读写指令或共享内存的方式传递的录屏数据,通过所述第二进程直接将录屏数据封装成推流格式进行直播推流;第二推流模块,用于对于通过socket方式传递的录屏数据,通过所述第二进程对录屏数据进行拆包再封装成推流格式进行直播推流。
结合第二方面或第二方面的第一至第四中任一种实施方式,在第二方面的第五种实施方式中,本发明的实施例提供的录屏直播装置还包括:协商单元,用于通过所述第一进程和所述第二进程之间的进程间通信协商传递所述录屏数据的时间节点,其中,所述时间节点的协商由所述第一进程或所述第二进程中的任何一方主动发起。
第三方面,本发明的实施例还提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行本发明任一实施例提供的录屏直播方法。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现本发明任一实施例提供的录屏直播方法。
本发明的实施例提供的录屏直播方法、装置、电子设备、存储介质,通过第一进程获取录屏数据,然后将获取的录屏数据传递给第二进程,并通过第二进程对录屏数据进行直播推流,由于第二进程分配到的系统资源大于第一进程分配到的系统资源,因此,让第一进程仅仅执行录屏操作,而将推流操作转移给另外一个资源更丰富的进程执行,就能够有效减轻第一进程的负载,大大增强了录屏直播的稳定性,使录屏直播更加流畅顺利地进行。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
第一方面,本发明实施例提供一种录屏直播方法,能够提高录屏直播的稳定性,使录屏直播更加流畅顺利地进行。
图1为本发明的实施例提供的录屏直播方法的一种流程图,如图1所示,本实施例的录屏直播方法可以包括:
S11,通过第一进程获取录屏数据;
本步骤中,可以通过第一进程实现对屏幕操作的录制,可选的,录制的屏幕信息既可以是针对某一个或多个应用、窗口的操作过程,也可以是对整个屏幕的所有应用或窗口的操作过程,本发明的实施例对此不做限定。
对于不同的操作系统,第一进程的具体类型可以有所不同,既可以是操作系统自身提供的用于录屏操作的类、函数等,也可以是第三方提供的用于进行录屏操作的插件等。例如,对于ios系统,系统提供了录屏音视频流数据采集扩展Upload Extension,因此,第一进程可以是基于该扩展的进程,通过该扩展即可以直接获取到相应的录屏数据。
S12,将获取的所述录屏数据传递给第二进程;其中,所述第二进程分配到的系统资源大于所述第一进程分配到的系统资源;
本步骤中,可以将第一进程获取的录屏数据通过进程间的通信机制传递给第二进程,其中,第二进程分配到的系统资源大于第一进程分配到的系统资源。可以理解的,操作系统中可以同时运行多个进程,对应实现不同的功能。由于实现的功能不同,这些进程在系统中所处的地位也有高低之分。例如,与系统核心操作密切相关的进程具有较高的地位,而实现一些次要功能的进程则具有较低的地位。操作系统在为这些进程分配系统资源(例如,CPU资源、内存资源等)时,可以为地位高的进程分配更多系统资源,而为地位较低的进程分配较少的系统资源。由于录屏操作与系统核心操作差距较远,第一进程分配到的系统资源可能会比较受限,因此,本步骤中,第一进程获取到录屏数据后,可以将获取的录屏数据传递给系统资源更丰富的第二进程。
S13,通过所述第二进程对所述录屏数据进行直播推流。
由于第二进程具有更加丰富的系统资源,因此能够处理更为复杂的操作而不发生延迟或崩溃,从而将录制的各种屏幕操作等推送到直播服务器,实现录屏直播。
本发明的实施例提供的录屏直播方法,通过第一进程获取录屏数据,然后将获取的录屏数据传递给第二进程,并通过第二进程对录屏数据进行直播推流,由于第二进程分配到的系统资源大于第一进程分配到的系统资源,因此,让第一进程仅仅执行录屏操作,而将推流操作转移给另外一个资源更丰富的进程执行,就能够有效减轻第一进程的负载,大大增强了录屏直播的稳定性,使录屏直播更加流畅顺利地进行。
可选的,第一进程与第二进程之间可以具有一定的联系。例如,第一进程可以依附于所述第二进程。在本发明的一个实施例中,进行录屏数据获取的第一进程可以包括录屏扩展插件,进行直播推流操作的第二进程可以包括直播应用,由于插件在系统中的地位低于应用,第一进程所分配到的系统资源少于第二进程分配到的系统资源,本发明的实施例通过进程间的通信,对第一进程获取到的录屏数据进行了数据转移,转移给第二进程来实现相对复杂的直播推流工作,从而大大增强了对录屏数据进行直播推流的稳定性,避免了当系统资源紧张时,第一进程因资源进一步受限难以承担工作负荷而崩溃的情况,有效提升了用户体验。
进一步的,在本发明的一个实施例中,在通过第一进程获取录屏数据之后,在将录屏数据传递给第二进程之前,本发明的实施例提供的录屏直播方法还可以包括:检测第一进程所占用的系统资源与第一进程需要执行的任务是否匹配,如果第一进程所占用的系统资源小于预设阈值,难以完成其需要执行的任务,则第一进程将录屏数据传递给第二进程,以便使第二进程对该任务进行进一步处理。
与现有技术中的通过单个线程同时完成屏幕操作录制和直播推流操作的处理思想完全不同,本发明的实施例提供的录屏直播方法,能够根据线程具体分配到的系统资源的多少以及自身处理任务的复杂程度,将任务进行拆分,将过于复杂的操作交给资源更丰富的线程处理,从而有效提升了系统的稳定性。
在将任务交给资源更富的线程的过程中,需要通过进程间的通信将需要处理的录屏数据传递。可选的,步骤S11中获取的录屏数据可以是音频数据、视频数据,也可以是音频数据和视频数据的结合。根据录屏数据的类型的不同,在步骤S12中,第一进程和第二进程之间数据传递的处理过程也可以不同。具体而言,步骤S12中,将获取的录屏数据传递给第二进程可以包括:将录屏数据中的音频数据直接传递给第二进程,将录屏数据中的视频数据进行视频压缩并将压缩后的视频数据传递给第二进程,从而可以在保证视频质量的同时大大降低视频数据的数据量。
在将各种录屏数据传递给第二进程的过程中,可以根据具体情况的不同,选择不同的进程间通信方式进行。可选的,在本发明的一个实施例中,将录屏数据传递给第二进程的方式可以包括以下一种或多种:通过读写指令直接传递、通过套接字socket进行数据传递、通过共享内存进行数据传递。
其中,通过读写指令直接传递的方式实现起来相对简单,但需要读写磁盘操作,当数据量不大时,可以通过这种方式在第一进程和第二进程之间进行录屏数据传递。通过socket进行数据传递需要先在第一进程和第二进程之间搭建socket通道,然后通过网络通信的方式进行录屏数据的传递,避免了频繁的磁盘读写操作。通过共享内存进行数据传递则需要首先开辟出一块第一进程和第二进程可以共同访问的内存空间,第一进程可以将录屏数据写入该共享内存,第二进程则可以从该共享内存中读取相应的录屏数据。
完成录屏数据的传递之后,在步骤S13中即可通过第二进程对录屏数据进行直播推流。录屏数据传递的方式不同,第二进程进行直播推流的具体处理方法也相应不同。可选的,对于通过读写指令或共享内存的方式传递的录屏数据,可以通过第二进程直接将录屏数据封装成推流格式进行直播推流;对于通过socket方式传递的录屏数据,由于在数据传递的过程中将录频数据打包成了socket数据包,因此可以通过第二进程对录屏数据进行拆包再封装成推流格式进行直播推流。
进一步的,在本发明的实施例中,第一进程负责录屏数据的获取,第二进程负责将录屏数据推流到直播服务器,为了更好的实现录屏直播,本发明实施例提供的录屏直播方法还可以包括:通过第一进程和第二进程之间的进程间通信协商传递录屏数据的时间节点,其中,所述时间节点的协商可以由第一进程或第二进程中的任何一方主动发起。可选的,这些时间节点可以包括录屏数据传递的开始节点、暂停节点、终止节点等。例如,第一进程在向第二进程传递录屏数据前,可以检测是否收到了第二进程发送的准备接收录屏数据的消息,如果检测到了该消息,第一进程才开始向第二进程传递录屏数据,否则不进行数据传递。当第一进程结束录屏数据的采集时,可以通知第二进程停止录屏数据的推流。当然,第二进程也可以主动停止录屏数据的推流并通知第一进程。可选的,在本发明的一个实施例中,第二进程对于接收到的录屏数据可以进一步选择合适的推送时机,例如可以立即推送、可以暂缓推送、也可以丢弃数据不进行推送。
下面通过具体实施例对本发明实施例提供的录屏直播方法进行详细说明。
为了更清晰地展示第一进程与第二进程各自的操作,本实施例中将录屏直播过程分别从第一进程和第二进程的角度予以说明。
图2为录屏直播方法在第一进程中执行的一种流程图。如图2所示,本发明实施例提供的录屏直播方法可以包括如下步骤:
S201、启动第一进程;
S202、第一进程获取到采集回调的录屏数据;
S203、第一进程检测第二进程是否准备好接收录屏数据,如果准备好了则执行步骤S204,否则继续本步骤;
S204、第一进程检测获取的录屏数据是否包括视频数据,如果包括则执行步骤S205,否则执行步骤S206;
S205、第一进程对视频数据进行压缩;
S206、第一进程将录屏数据通过socket封包后发送;
S207、停止第一进程并通知第二进程停止推流。
图3为录屏直播方法在第二进程中执行的一种流程图。如图3所示,本发明实施例提供的录屏直播方法可以包括如下步骤:
S301、启动第二进程;
S302、第二进程配置推流参数;
S303、第二进程通知第一进程开始接收录屏数据;
S304、监听是否收到第一进程的停止推流通知,如果收到,则执行步骤S307,否则执行步骤S305;
S305、第二进程接收第一进程发送的socket数据并拆包;
S306、第二进程将拆包后的数据重新打包成直播推流的格式进行推流;
S307、第二进程结束推流。
第二方面,本发明的实施例还提供一种录屏直播装置,能够提高录屏直播的稳定性,使录屏直播更加流畅顺利地进行。
如图4所示,本发明的实施例提供的录屏直播装置可以包括:
获取单元41,用于通过第一进程获取录屏数据;
传递单元42,用于将获取的所述录屏数据传递给第二进程;其中,所述第二进程分配到的系统资源大于所述第一进程分配到的系统资源;
推流单元43,用于通过所述第二进程对所述录屏数据进行直播推流。
本发明的实施例提供的录屏直播装置,通过第一进程获取录屏数据,然后将获取的录屏数据传递给第二进程,并通过第二进程对录屏数据进行直播推流,由于第二进程分配到的系统资源大于第一进程分配到的系统资源,因此,让第一进程仅仅执行录屏操作,而将推流操作转移给另外一个资源更丰富的进程执行,就能够有效减轻第一进程的负载,大大增强了录屏直播的稳定性,使录屏直播更加流畅顺利地进行。
可选的,所述第一进程包括录屏扩展插件,所述第二进程包括直播应用,所述第一进程依附于所述第二进程。
可选的,所述录屏数据包括音频数据和/或视频数据;传递单元42,具体可以用于将所述录屏数据中的音频数据直接传递给所述第二进程,将所述录屏数据中的视频数据进行视频压缩并将压缩后的视频数据传递给所述第二进程。
可选的,将所述录屏数据传递给所述第二进程的方式包括以下至少一种:通过读写指令直接传递、通过套接字socket进行数据传递、通过共享内存进行数据传递。
可选的,推流单元43可以包括:
第一推流模块,用于对于通过读写指令或共享内存的方式传递的录屏数据,通过所述第二进程直接将录屏数据封装成推流格式进行直播推流;
第二推流模块,用于对于通过socket方式传递的录屏数据,通过所述第二进程对录屏数据进行拆包再封装成推流格式进行直播推流。
进一步的,本发明的实施例提供的录屏直播装置还可以包括:
协商单元,用于通过所述第一进程和所述第二进程之间的进程间通信协商传递所述录屏数据的时间节点,其中,所述时间节点的协商由所述第一进程或所述第二进程中的任何一方主动发起。
第三方面,本发明实施例提供一种电子设备,能够提高录屏直播的稳定性,使录屏直播更加流畅顺利地进行。
如图5所示,本发明的实施例提供的一种电子设备,可以包括:壳体51、处理器52、存储器53、电路板54和电源电路55,其中,电路板54安置在壳体51围成的空间内部,处理器52和存储器53设置在电路板54上;电源电路55,用于为上述电子设备的各个电路或器件供电;存储器53用于存储可执行程序代码;处理器52通过读取存储器53中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的录屏直播方法。
处理器52对上述步骤的具体执行过程以及处理器52通过运行可执行程序代码来进一步执行的步骤,可以参见前述实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
第四方面,本发明的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种录屏直播方法,因此也能实现相应的技术效果,前文已经进行了详细说明,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。